[BOJ] 15989 : 1,2,3 더하기 4

15989 : 1,2,3 더하기 4

풀이

DP

1->1

2->1+1 / 2

3->1+1+1 / 1+2 / 3

4->1+1+1+1 / 1+1+2 2+2 / 1+3

5->1+1+1+1+1 / 1+1+1+2 1+2+2 / 1+1+3 2+3

6->1+1+1+1+1+1 / 1+1+1+1+2 1+1+2+2 2+2+2 / 1+1+1+3 1+2+3 3+3

7->1+1+1+1+1+1+1 / 1+1+1+1+1+2 1+1+1+2+2 1+2+2+2 / 1+1+1+1+3 1+1+2+3 1+3+3 2+2+3

1로만된거(무조건 1개)

마지막에 2로 더한거 ->dp[0][i]

마지막에 3을 더한거 ->dp[1][i]

출력: 1 + dp[0][n] + dp[1][n]

코드

#include <iostream>
using namespace std;

int dp[2][10001];

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);


    dp[0][2] = 1;
    for (int i = 3; i <= 10000; i++) {
        dp[0][i] = dp[0][i - 2] + 1;
        dp[1][i] = dp[0][i - 3] + dp[1][i - 3] + 1;
    }
    int T;
    cin >> T;
    while (T--) {
        int n;
        cin >> n;
        cout << 1+dp[0][n]+dp[1][n] << '\n';
    }
    
    return 0;
}
Written on March 14, 2019