sta12321   2년 전

런타임 에러 (ArrayIndexOutOfBounds) 뜹니다.. ㅜㅜ 어디가 잘못된 것일까요..

wizardrabbit   2년 전

안녕하세요? 말씀하신 런타임 에러를 발생시키는 입력입니다:

1
999999 1000000

런타임 에러 ArrayIndexOutOfBounds는 주로 배열의 범위를 벗어난 위치를 참조하려고 했을 때 발생하는 에러입니다. 배열의 크기가 20인데, 900번째 인덱스의 값을 가져오려 하면 당연히 오류가 발생하겠죠?

그리고 이 코드 역시 배열의 범위를 벗어난 참조가 존재합니다.

문제의 조건에 의하면 입력되는 수는 0 ≤ N ≤ M ≤ 1,000,000 입니다. 그렇다면 0부터 1,000,000까지 모든 수를 저장하려면 필요한 배열의 크기는 1,000,000이 아닌 1,000,001이 됩니다. 1부터 1,000,000까지의 수를 저장하기 위해 크기가 1,000,000인 배열이 필요하니까요. 배열의 크기가 부족한 것입니다.

그렇기에 코드의 16번째 줄에 1,000,000이 j값으로 주어지면 array[1000000] 을 참조할테니 범위를 벗어나므로 런타임 에러가 발생하는 것입니다.

문제의 조건을 다시 한 번 확인하시고 배열의 크기를 수정한다면 문제를 해결하실 수 있을 것입니다!

sta12321   2년 전

감사합니다.

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