728x90
반응형
이건 글 쓸 생각 없었는데 현타가 와서 글을 남긴다. 나같은 사람이 어딘가에 또 있을거라 생각하고 도움이 되고자한다.
DP로 간단하게 코드를 적고 제출버튼을 딱 눌렀더니 런타임에러가 떴다.
n=int(input())
dp=[0]*(n+1)
dp[1]=1
dp[2]=1
dp[3]=2
for i in range(4,n+1):
dp[i]=dp[i-1]+dp[i-2]
print(dp[n])
왜 일까 한참을 고민하고보니 3이하의 수를 입력했을때 에러가 발생함을 확인했다. 그 말은 즉 이런 소리다.
난 지금 dp[2], dp[3]까지 다 미리 정의해놨는데 만약 n=1이라면 dp[2]는 존재할까? 존재하지도 않는데 나는 dp[2]=1이라고 정의해두었다. 이로인해 발생하는 에러이다. 아래와 같이 하면 n의 정의가 90이하의 자연수이기 때문에 에러를 발생시키지 않는다.
n=int(input())
dp=[0]*(n+1)
dp[0]=0
dp[1]=1
for i in range(2,n+1):
dp[i]=dp[i-1]+dp[i-2]
print(dp[n])
728x90
반응형
'프로그래밍 > 백준' 카테고리의 다른 글
백준 11053: 가장 긴 증가하는 부분 수열 해설- python (0) | 2022.01.31 |
---|---|
백준 2579: 계단오르기 해설- python (0) | 2022.01.30 |
백준 9095: 1, 2, 3 더하기 해설- python (0) | 2022.01.26 |
백준 11727: 2xn 타일링(2) 해설- python (0) | 2022.01.23 |
백준 11726: 2xn 타일링 해설- python (1) | 2022.01.23 |