백준 문제 링크
오르막 수
- DP = [1] * 10으로 설정한다. (0 ~ 9 까지의 숫자 카운트를 나타냄)
- N번 동안 DP의 값을 변환시킬 건데,
N = 1이면 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
그 이유는 N = 1 (한자리 수) 이면 최댓값이 0 ~ 9인 10개이기 때문이다.
N = 2이면 [55, 45, 36, 28, 21, 15, 10, 6, 3, 1]
그 이유는 N = 2 (두자리 수) 이면 최댓값이
00 ~ 09 : 10개, 11 ~ 19 : 9개, ... 99 : 1개
총 55개가 최대이기 때문이다.- DP[0] 를 10007로 나눴을 때 나머지를 출력하면 끝!
N = int(input())
DP = [1] * 10
for _ in range(N):
for j in range(10):
DP[j] = sum(DP[j:])
print(DP[0] % 10007)