눈송이의 개발생활

[BOJ]9095 - 1,2,3 더하기 (C++) 본문

Algorithm/BOJ

[BOJ]9095 - 1,2,3 더하기 (C++)

꾸지새미언니

문제

https://www.acmicpc.net/problem/9095

코드

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int dp[10001]; 

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

    int tc, n; 
    dp[1]= 1; dp[2]=2; dp[3]=4;
    cin >> tc; 
    for(int i=0; i<tc; i++){
        cin >> n; 
        for (int i=4; i<n+1; i++){
            dp[i] = dp[i-1]+ dp[i-2]+dp[i-3];
        }
        cout << dp[n] << "\n";
    }
}

풀이

다이나믹 프로그래밍을 하는 문제
1,2,3으로 만들어진 숫자를 생각하는 문제이기 때문에 구해야 하는 숫자-1, -2, -3을 보면 해결할 수 있다.
예를 들어 9를 1,2,3의 합으로 나타내기 위해서는 9보다 1,2,3 작은 수에 각각 1,2,3을 더하면 되기 때문에 이전에 구했던 6,7,8의 계산 결과를 이용하면 된다.

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ]11048 - 이동하기 (C++)  (0) 2022.01.05
[BOJ]11762 - 2×n 타일링 (C++)  (0) 2022.01.05
[BOJ]2346 - 풍선 터뜨리기 (C++)  (0) 2022.01.05
[BOJ]3078 - 좋은 친구 (C++)  (0) 2022.01.04
[BOJ]10799 - 쇠막대기 (C++)  (0) 2022.01.04
Comments