n이 1일 때와 2일 때 각각 1가지와 2가지 경우의 수가 있다는 사실을 알기 때문에 bottom-up 방식으로 접근한다. n을 증가시키면서 방법의 수를 조금만 계산해보아도 다음과 같은 점화식을 얻을 수 있었다.
dp[i] = dp[i-1] + dp[i-2]
n = int(input())
dp = [0] * (n+1)
dp[1] = 1
dp[2] = 2
for i in range(3, n+1):
dp[i] = dp[i-1] + dp[i-2]
print(dp[n]%10007)
런타임 에러 발생하여 dp 배열 부분을 수정하였다.
n = int(input())
dp = [0, 1, 2]
for i in range(3, n+1):
dp.append(dp[i-1] + dp[i-2])
print(dp[n]%10007)
dp = [0, 1, 2]
for i in range(3, 1001):
dp.append(dp[i - 2] + dp[i - 1])
n = int(input())
print(dp[n] % 10007)