해결된 질문
작성
·
233
0
//24 jolly jumpers
// 5번 케이스에서 NO가 나와야 하는데, YES가 나옵니다.
// 배열 인덱스 범위를 조절하는 코드를 추가하면 문제야 잘 해결된다지만,
// 왜 5번케이스에 대해서 YES가 뜨는지 궁금합니다!
#include <stdio.h>
#include <cmath>
using namespace std;
int arr[105];
int N, i, a, b,subs;
int main(void){
scanf("%d", &N);
scanf("%d", &a);
for(i=1; i<N; i++){
scanf("%d", &b);
subs = abs(a-b);
a=b;
if(arr[subs]!=0) {
printf("NO");
return 0;
}
arr[subs]++;
}
for(i=1; i<=N-1; i++){
if(arr[subs]==0) {
printf("NO");
return 0;
}
}
printf("YES");
return 0;
}
답변 1
1
안녕하세요^^
제 컴퓨터에서는 5번 케이스가 NO라고 뜹니다.
이것은 각 컴퓨터마다 환경에 따라 배열의 index out of range가 났을 때 메모리를 관리하는 방법에 차이가 있어서 그런것 같습니다. 여튼 개발자라면 index out of range 에러가 나지 않도록 짜야겠죠.