https://www.acmicpc.net/problem/11726

import sys
sys.stdin = open("input.txt")
n = int(sys.stdin.readline().rstrip())
dp = [0] * 1001
dp[1] = 1
dp[2] = 2
for i in range(3, n+1):
dp[i] = (dp[i-1]+ dp[i-2]) % 10007
print(dp[n])
알고리즘 분류:
- 다이나믹 프로그래밍
Key Points:
직접 케이스 별 값을 찾은 다음 점화식을 세워봤더니 dp[i] = dp[i-1] + dp[i-2]가 나왔다. 조금 더 원리적으로 파고 들어가면 왜 이런 점화식이 도출되는지 알 수 있겠지만 사실 이런 문제는 그냥 직접 점화식을 찾고 넘어가는게 정신 건강에 좋을 것 같다...
'Algorithm - Python으로 다시 > DP' 카테고리의 다른 글
| [백준] 11727번: 2xn 타일링 2 (직접 점화식 찾기 2) (0) | 2024.07.24 |
|---|---|
| [백준] 2156번: 포도주 시식 (가능한 모든 상황을 고려하는 DP) (1) | 2024.07.22 |
| [백준] 1912번: 연속합 (이전까지의 합과 현재값 비교 DP) (3) | 2024.07.22 |
| [백준] 9095번: 1, 2, 3 더하기 (직접 점화식 찾기) (0) | 2024.07.22 |
| [백준] 1463번: 1로 만들기 (dp의 기본) (0) | 2024.07.20 |