티스토리 뷰
728x90
반응형
문제
https://www.acmicpc.net/problem/11057
11057번: 오르막 수
오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수
www.acmicpc.net
코드
n = int(input())
dp = [[0] * 10 for _ in range(n+1)]
for i in range(10):
dp[1][i] = 1
for i in range(2, n+1):
for j in range(10):
for k in range(j+1):
dp[i][j] += dp[i-1][k]
print(sum(dp[n])%10007)
오르막 수 문제는 맨처음 숫자로 0이 가능하고 숫자가 같아도 오르막 수 이다.
0 | 1 | 2 | 3 | 4 | 5 | 6 | ... | 9 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 |
n = 1일 경우에는 한자리 수 이므로
0이 맨뒤로 오는 경우의 수 0으로 => 1가지
1이 맨뒤로 오는 경우의 수 1로 => 1가지
...
9가 맨뒤로 오는 경우의 수 9로 => 1가지
n = 2일 경우에는
0이 맨뒤로 오는 경우의 수 00으로 => 1가지
1이 맨뒤로 오는 경우의 수 01, 11로 => 2가지
2가 맨뒤로 오는 경우의 수 02, 12, 22로 => 3가지
...
이런식으로 만약 n=2 일때 5가 맨뒤에 오는 오르막수의 경우의 수를 구하고 싶으면
dp[2][5] = dp[1][0] + dp[1][1] ... dp[1][5] 까지 합한 값이 된다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2583번, 영역 구하기 (Python) (0) | 2021.07.16 |
---|---|
[백준] 4963번, 섬의 개수 (Python) (0) | 2021.07.15 |
[백준] 7562번, 나이트의 이동 (Python) (0) | 2021.07.09 |
[백준] 2636번, 치즈 (Python) (0) | 2021.07.08 |
[백준] 2468번, 안전영역 (Python) (0) | 2021.07.08 |
댓글