인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

수강생님의 프로필 이미지
수강생

작성한 질문수

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

Jolly Jumper 문제에서 질문 하나만 드립니다

작성

·

155

0

반복문 안에서 두 수의 차이를 비교하는 부분인 int pos = abs(prev - num)을, prev처럼 따로 변수를 만들지 않고  저는 배열을 만들어 입력받게 했는데요, int pos = abs(jolly[i] - jolly[i-1]) 처럼 말입니다. 

이렇게 하면 5번 케이스에서 시간초과 오류가 나는데 혹시 이유를 알 수 있을까요? 저 부분 빼고는 모두 동일한데 왜 저렇게 하면 타임리미트가 되는지 궁금합니다. C++에서 배열 계산이 원래 느린편인가요?

cin >> jolly[0];
for(int i = 1; i < N; i++){
	cin >> jolly[i];
	int pos = abs(jolly[i] - jolly[i - 1]);	// 타임에러 부분
        // 이하 생략
}

답변 4

0

수강생님의 프로필 이미지
수강생
질문자

그럼 제 컴퓨터 문제였군요. 답변 감사합니다 :)

0

김태원님의 프로필 이미지
김태원
지식공유자

제 컴퓨터에서는 100점이 나옵니다.

0

수강생님의 프로필 이미지
수강생
질문자

main 내부의 코드입니다. 시간초과가 나거나 이번에는 exit_code 에러가 뜨기도 하네요. check배열이 반드시 vector로 만들어져야 할까요?

int main() {
	freopen("input.txt", "rt", stdin);
	ios_base::sync_with_stdio(false); 
	
	int N;
	int jolly[101] = {0};
	bool check[101] = {false}; 
	cin >> N;

	cin >> jolly[0];
	for(int i = 1; i < N; i++){
		cin >> jolly[i];
		int tmp = abs(jolly[i] - jolly[i - 1]);		
		if(check[tmp] == true || tmp > N || tmp == 0){
			cout << "NO";
			exit(0);
		}
		else check[tmp] = true;
	}
	cout << "YES";

}

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

제 코드와 큰 차이는 없어보입니다.

제 컴퓨터에서 채점해보게 전체코드를 올려보세요.

수강생님의 프로필 이미지
수강생

작성한 질문수

질문하기