728x90
오르막수
https://www.acmicpc.net/problem/11057
<코드>
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 | #include <stdio.h> #define mod 10007 int main(void){ int N; int number[1001][10] = {}; int total = 0; scanf("%d", &N); for (int i = 0; i < 10; i++) number[1][i] = 1; for (int i = 2; i <= N; i++) for (int j = 0; j < 10; j++) for (int k = j; k < 10; k++) number[i][j] = (number[i][j] + number[i - 1][k]) % mod; for (int i = 0; i < 10; i++) total = (total + number[N][i]) % mod; printf("%d\n", total); return 0; } | cs |
<문제 푼 요령>
1. 이 문제는 한번에 우리가 원하는 자릿수를 구하는게 아니고 차근차근 자릿수를 올려가면서 구하면 될 거 같다 마치 피보나치 수열을 구하는 것 처럼
2. 현재의 j 자릿수에 앞의 숫자가 i 라고 했을 때 이 숫자는 j-1 자릿수의 앞자리가 i 보다 크거나 같은 값으로 만들 수 있다.
3. 이를 우리가 원하는 N자리수 까지 반복한다면 우리는 정답을 구할 수 있다.
728x90
'Algorithm > DP(동적 계획법)' 카테고리의 다른 글
[백준][2156번][DP] 포도주 시식 (2) | 2016.04.13 |
---|---|
[백준][2193번][DP] 이친수 (3) | 2016.04.13 |
[백준][10844번][DP] 쉬운 계단 수 (3) | 2016.04.13 |
[백준][11052번][DP] 붕어빵 (0) | 2016.04.13 |
[백준][11727번][DP] 2xn 타일링 2 (2) | 2016.04.12 |
댓글