본문 바로가기

알고리즘/백준

[BOJ 2688] 줄어들지 않아

단계와 끝자리 수를 이용해서 DP를 정의할 수 있다.

 

 

단계만을 매개변수로 사용할 경우에는, 점화식을 세울 수 없다.

 

 

끝자리 수를 이용해서, 점화식을 완성할 수 있다.

 

 

DP[i][j] += DP[i - 1][k] (0 <= k <= j)

 

 

 

해설코드(C++).

 

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
#include <iostream>
using namespace std;
 
long long dp[65][10];
int T, N;
int main() {
    for(int i = 0; i < 10; i++)
        dp[1][i] = 1;
        
    for(int i = 2; i <= 64; i++){
        for(int j = 0; j < 10; j++){
            dp[i][j] = 0;
            for(int k = 0; k <= j; k++){
                dp[i][j] += dp[i - 1][k];
            }
        }
    }
    
    cin >> T;
    for(int i = 1; i <= T; i++){
        cin >> N;
        long long answer = 0;
        for(int j = 0; j < 10; j++)
            answer += dp[N][j];
            
        cout << answer << endl;
    }
    return 0;
}

 

'알고리즘 > 백준' 카테고리의 다른 글

[BOJ 1107] 리모컨  (0) 2020.05.25
[BOJ 1182] 부분수열의 합(비트마스크, 재귀함수, C++)  (0) 2020.05.24
[BOJ 2309] 일곱 난쟁이  (0) 2020.05.19
[BOJ 1254] 팰린드롬 만들기  (0) 2020.05.19
[BOJ 1562] 계단 수  (0) 2020.05.17