문제풀이
1. kt를 길이가 t이고 k로 끝나는 오르막 수라고 하고 점화식을 세우면 다음과 같습니다.
kt=∑kl=0lt−1
즉, 길이가 2인 1로 끝나는 오르막 수의 개수는 길이가 1인 0으로 끝나는 오르막 수의 합(한개(0))과 길이가 1인 1로 끝나는 오르막 수의 합(한개(1))인 2개입니다. 0 뒤에 1을 붙이고, 1 뒤에 1을 붙여 {00, 01} 두 개가 됩니다.
2. 위의 k를 1부터 n까지 올리며 계산한 후, ∑9k=0kn을 반환합니다.
Python Code
1
2
3
4
5
6
|
n = int(input())
li = [1] * 10
for _ in range(n-1):
tmp = [sum(li[:i+1])%10007 for i in range(10)]
li = tmp.copy()
print(sum(li)%10007)
|
cs |
Line 4, 6 : 문제의 조건에 따라 %10007을 해줍니다.
문제링크
11057번: 오르막 수
오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수
www.acmicpc.net
'알고리즘 > 백준' 카테고리의 다른 글
백준 1309 동물원 (0) | 2020.12.07 |
---|---|
백준 20299 3대 측정 (0) | 2020.12.04 |
백준 4358 생태학 (0) | 2020.10.21 |
백준 1520 내리막 길 (0) | 2020.10.20 |
백준 1152 단어의 개수 (0) | 2020.08.31 |