Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 객체지향
- UXUI챌린지
- 백엔드개발자
- Java
- Spring
- mysql
- 국비지원
- 티스토리챌린지
- 오블완
- 디자인챌린지
- 국비지원교육
- 백준
- baekjoon
- 환급챌린지
- 패스트캠퍼스
- 내일배움캠프
- 부트캠프
- 디자인강의
- 백엔드 부트캠프
- 오픈챌린지
- UXUI기초정복
- KDT
- 오픈패스
- 국비지원취업
- 디자인교육
- UXUIPrimary
- Be
- 백엔드
- OPENPATH
- 내일배움카드
Archives
- Today
- Total
군만두의 IT 공부 일지
[백준] 11057번: 오르막 수 (파이썬) 본문
✅문제: 11057번

📌문제풀이
0부터 9까지의 숫자로 이루어진 오르막 수의 개수를 계산하는 문제임. 오르막 수는 각 자릿수가 이전 자릿수 이상인 수를 의미하며, n자리 오르막 수의 개수를 동적 계획법(DP)을 사용하여 계산함.
- DP 배열 초기화
- dp[i][j]: i자리 오르막 수 중 마지막 숫자가 j인 경우의 수를 저장하는 배열.
- : 한 자리 수는 0부터 9까지 각각 1개임.
- 점화식
- dp[i][j]: i자리 오르막 수에서 마지막 자릿수가 j인 경우를 구하기 위해, 이전 자릿수에서 0부터 j까지의 값을 더함.
- dp[i][j] = dp[i−1][0] + dp[i−1][1] + ⋯ + dp[i−1][j]
- dp[i][j]: i자리 오르막 수에서 마지막 자릿수가 j인 경우를 구하기 위해, 이전 자릿수에서 0부터 j까지의 값을 더함.
- 결과 계산
- 모든 계산은 10007로 나눈 나머지를 저장함.
- n자리 오르막 수의 총 개수는 dp[n][0] + dp[n][1] + ⋯ + dp[n][9]의 합임.
dp = [[0 for _ in range(10)] for _ in range(1001)]
for i in range(10):
dp[1][i] = 1
for j in range(2, 1001):
for i in range(10):
for k in range(i + 1):
dp[j][i] += dp[j - 1][k] % 10007
n = int(input())
result = sum(dp[n]) % 10007
print(result)
📌후기
- DP 배열과 점화식을 활용해 문제를 해결하는 문제로 다이나믹 프로그래밍 연습하기 좋은 문제였던 것 같음.
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 1991번: 트리 순회 (파이썬) (0) | 2024.11.27 |
---|---|
[백준] 9095번: 1, 2, 3 더하기 (0) | 2024.11.25 |
[백준] 17952번: 과제는 끝나지 않아! (파이썬) (0) | 2024.11.24 |
[백준] 1260번: DFS와 BFS (0) | 2024.11.20 |
[백준] 2293번: 동전 1 (파이썬) (2) | 2024.11.19 |
Comments