문제 : https://www.acmicpc.net/problem/11057
이 문제는 고생 많이한 문제다.
문제의 해결법은 다음과 같다.
d[i] 를 i+1 번째 자릿수의 앞자리 로 하자.
1자리 숫자들은 전부 오르막 수로 볼수 있기 때문에 1로 초기화한다.
이제 생각해보면
12,13,14.. 23,24,25..등등은 전부 오르막 수인데,
1 + (1이상 수 ) , 2+ (2이상 수) 라고 보면 n이상의 수를 전부 더하는것과 마찬가지다.
이 개념을 생각하고 보면 된다 ( j index가 바로 이부분이다.)
i 인덱스는 0-9까지 각 자리수를 연산하는 반복문 자리고, a는 n까지 계산하는데 쓴다.
n = int(input())
modv = 10007
d = [[1,1,1,1,1,1,1,1,1,1]]
for a in range(1,n):
tmp = [0]*10
for i in range(10):
for j in range(i,10):
tmp[i] += d[a-1][j]
tmp[i] %= 10007
d.append(tmp)
print(sum(d[-1])% 10007)
'취준 > 백준' 카테고리의 다른 글
[백준][Python][10942][DP] 팰린드롬? (0) | 2020.02.12 |
---|---|
[백준][Python][1890][DP]점프 (0) | 2020.02.11 |
[백준][Python][3190][브루트포스] 뱀 (0) | 2020.02.11 |
[백준][9095][Python][DP] 1,2,3 더하기 (0) | 2020.02.09 |
[백준][Python][10971][브루트포스] 외판원 순회 2 (0) | 2020.02.08 |