abaik100   3년 전

숨바꼭질 run time 뜨는데 어떤 조건에서 문제가 되는지 잘 모르겠습니다.ㅠㅠ

djm03178   3년 전

조건을 검사할 때 check 배열에 먼저 접근하면 범위 초과 예외를 처리할 수 없습니다. 가령, now가 0인 상태에서 if(check[now-1]==0&&now-1!=0) 를 처리하려고 하면 check[-1]라는 인덱스에 접근하기 때문에 에러가 됩니다.

abaik100   3년 전

댓글 감사드립니다. 의도를 잘 이해하였는지는 모르겠으나 다음과 같이 꼼수를 부려서 수정을 해 보았습니다.  now가 0일 때의 에러는 없어진것 같으나 아직 run time 은 해결되지 않았습니다. 또 다른 문제가 있는 것 같은데... 부탁드립니다.  

djm03178   3년 전

now-1 뿐만이 아니라 now+1이나 now*2도 마찬가지입니다. 이런 건 그냥 순서를 바꿔서 범위 체크를 먼저 해주면 해결됩니다. && 연산자가 왼쪽부터 검사하는데, 왼쪽이 거짓이면 오른쪽은 아예 체크를 하지 않기 때문입니다.

댓글을 작성하려면 로그인해야 합니다.