문제출처 : https://www.acmicpc.net/problem/11057
1. 문제요약
- 33455, 012345와 같이 각 자릿수가 오름차순인 수를 오르막 수라 함.
- 인접한 수가 같아도 오름차순으로 인정
- 9111 과 같은 수는 오르막 수가 아님
- 수는 0으로 시작 할 수 있음
- 오르막 수의 갯수는?
- 1 <= n <= 1,000
2. 접근방법
- n자릿수가 1000 이므로 모든 수를 다 확인 할 수 없음
- n 자릿수의 마지막 수가 0 이면, n-1 자릿수의 마지막 수는 0
n 자릿수의 마지막 수가 1 이면, n-1 자릿수의 마지막 수는 0, 1
n 자릿수의 마지막 수가 2 이면, n-1 자릿수의 마지막 수는 0, 1, 2
...
- 필요한 항목은 자릿수, 마지막 수 이므로
- d[n][j] : n 자릿수, 마지막 수가 j인 오르막 수의 갯수
- d[n][j] = d[n-1][0] + d[n-1][1] + ... + d[n-1][j-1] + d[n-1][j] = ∑(i=0, j) d[n-1][i]
3. 시간복잡도
- n
4. 회고
- 10007의 나머지 이므로 n이 1000 이라 해도 1000자릿수의 10007의 나머지 합이 int 범위를 넘어 갈 수 없음
소스코드
[출처 : BOJ, 문제에 대한 모든 권리는 BOJ(acmicpc.net, startlink)에 있음]
'먹고살려면 > boj' 카테고리의 다른 글
BOJ 9456 스티커 (0) | 2018.01.18 |
---|---|
BOJ 2193 이친수 (0) | 2018.01.16 |
BOJ 10844 쉬운 계단 수 (1) | 2018.01.16 |
BOJ 9095 1, 2, 3 더하기 (0) | 2018.01.15 |
BOJ 11727 2xn 타일링2 (0) | 2018.01.15 |