yj5285   2년 전

파이썬 런타임 에러의 원인을 알고 싶어요

wizardrabbit   2년 전

안녕하세요!

확인 결과, 작성하신 코드는 입력으로 주어지는 값이 1 또는 2일 경우 런타임 에러가 발생할 수 있을 것 같습니다. 코드의 6번째 줄에서는 dp[1], dp[2], dp[3] 위치에 동시에 값을 할당하고 있습니다:

dp[1], dp[2], dp[3] = 1, 2, 4

그런데 입력된 값이 1이거나 2라면 코드의 5번째 줄에 의해 할당되는 dp 배열의 크기는 각각 2, 3일 것입니다. dp[3]에 값을 할당하려면 인덱스 0, 1, 2, 3에 해당하는 공간이 있어야 하므로 dp 배열의 크기는 최소 4여야 할 것입니다.

결국 공간이 부족해 배열 범위를 초과하는 런타임 에러가 생기게 됩니다. 이 런타임 에러를 해결하기 위해서는, 그냥 단순히 범위를 초과하지 않도록 충분한 크기의 dp 배열을 만들어 주시면 될 것 같습니다. 해결 방법은 여러 가지가 될 수 있겠죠... 그 중 제가 사용한 방법을 소스 코드로 첨부하겠습니다.

도움이 되었으면 좋겠습니다!

kdh6429   2년 전

n이 3미만으로 들어오는 경우, 배열 크기가 어떻게 되는지 고민해보세요

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