Algorithm/BOJ
[BOJ]9095 - 1,2,3 더하기 (C++)
꾸지새미언니
2022. 1. 5. 15:16
문제
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의 계산 결과를 이용하면 된다.