https://www.acmicpc.net/problem/11057
11057번: 오르막 수
오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수
www.acmicpc.net
아이디어
DP문제였다.. 규칙을 못 찾아서 검색했다 ㅠㅠ..
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | total | |
N = 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 10 |
N = 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 55 |
N = 3 | 1 | 3 | 6 | 10 | 15 | 21 | 28 | 36 | 45 | 55 | 220 |
행은 길이가 N일 때
열은 해당 숫자로 끝나는 경우의 수이다.

이 표에서 찾을 수 있는 규칙은 다음과 같다.
[i][j] = [i-1][j] + [i][j-1]
* 0일때 경우의 수는 계속 1개니까 (0, 00, 000, 0000...) 점화식을 사용해도 문제가 없다.
전체 코드
N = int(input())
dp = [1] * 10
for _ in range(1, N):
for j in range(1, 10):
dp[j] += dp[j-1]
print(sum(dp) % 10007)
찾은 점화식은 [i][j] = [i-1][j] + [i][j-1]인데 코드 상에서 dp[j] += dp[j-1]인 이유는 2차원 배열로 구하지 않고 i-1의 배열에서 바로 값을 구하기 때문이다. (i-1의 배열의 원래 값에 j-1을 더하기 때문에 [i-1][j] + [i][j-1]이 된다. )
'Coding Test > Python' 카테고리의 다른 글
[백준/BFS&BFS] 1012번: 유기농 배추 (실버2, python) (0) | 2024.02.02 |
---|---|
[백준/구현&문자열] 8958번: OX퀴즈 (브론즈2, python) (0) | 2024.02.01 |
[백준/DP] 2293번 동전1 (골드5, python) (1) | 2024.02.01 |
[LeetCode/BFS] 909. Snakes and Ladders (medium, python) (1) | 2024.01.31 |
[백준/DP] 1932번: 정수 삼각형 (실버 1, python) (0) | 2024.01.30 |
https://www.acmicpc.net/problem/11057
11057번: 오르막 수
오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수
www.acmicpc.net
아이디어
DP문제였다.. 규칙을 못 찾아서 검색했다 ㅠㅠ..
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | total | |
N = 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 10 |
N = 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 55 |
N = 3 | 1 | 3 | 6 | 10 | 15 | 21 | 28 | 36 | 45 | 55 | 220 |
행은 길이가 N일 때
열은 해당 숫자로 끝나는 경우의 수이다.

이 표에서 찾을 수 있는 규칙은 다음과 같다.
[i][j] = [i-1][j] + [i][j-1]
* 0일때 경우의 수는 계속 1개니까 (0, 00, 000, 0000...) 점화식을 사용해도 문제가 없다.
전체 코드
N = int(input())
dp = [1] * 10
for _ in range(1, N):
for j in range(1, 10):
dp[j] += dp[j-1]
print(sum(dp) % 10007)
찾은 점화식은 [i][j] = [i-1][j] + [i][j-1]인데 코드 상에서 dp[j] += dp[j-1]인 이유는 2차원 배열로 구하지 않고 i-1의 배열에서 바로 값을 구하기 때문이다. (i-1의 배열의 원래 값에 j-1을 더하기 때문에 [i-1][j] + [i][j-1]이 된다. )
'Coding Test > Python' 카테고리의 다른 글
[백준/BFS&BFS] 1012번: 유기농 배추 (실버2, python) (0) | 2024.02.02 |
---|---|
[백준/구현&문자열] 8958번: OX퀴즈 (브론즈2, python) (0) | 2024.02.01 |
[백준/DP] 2293번 동전1 (골드5, python) (1) | 2024.02.01 |
[LeetCode/BFS] 909. Snakes and Ladders (medium, python) (1) | 2024.01.31 |
[백준/DP] 1932번: 정수 삼각형 (실버 1, python) (0) | 2024.01.30 |