sunya7a   4년 전

dp[0] =1. dp[1]=1 로 잡아서 할 때는 맞았다고 나오는데 아래 소스처럼 dp[1]=1, dp[2]=2로 잡을 때는 틀리다는 것도 아니고 런타임 에러가 나버립니다.  이상한데요. 왜 그런걸까요????

cih468   2년 전

같은 에러로 고생하다가 해결해서 답글답니다.

 dp배열의 크기를 [N+1]로 잡기 때문에

n=1인 경우 

dp[2] = 2 로 잡는 부분에서 배열의 크기가 2인데 2번째 인덱스를 접근하니

ArrayOutOfBoundsException이 발생합니다.

혹은 n=1입력이 들어갔을 경우 dp[x-2] 코드에서 런타임 에러가 발생할 수도 있지만 아마 위의 에러이신 분들이 많을 것으로 생각됩니다.

정확한 디버그는 eclipse 등의 프로그램에서 입력으로 1을 넣고 코드가 에러가 뜨는 곳을 확인하시면 좋을것 같습니다.(Java의 경우)

90%이후에서 런타임 에러가 나시는 분들은 이 부분 체크해서

질문자님처럼 dp[0]= 1, dp[1]= 1과 같이 코딩해주시면 해결될겁니다.


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