Algorithm/백준
C++ 알고리즘 - 백준 9095 1, 2, 3 더하기 (다이나믹 프로그래밍)
마루설아
2025. 1. 5. 20:28
https://www.acmicpc.net/problem/9095
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
int main(void) {
/************** C++ Init **************/
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
/************** C++ Init **************/
int input1, input2;
vector<int> v;
v.push_back(0);
v.push_back(1);
v.push_back(2);
v.push_back(4);
for (int i = 4; i < 11; i++) {
v.push_back(v[i - 3] + v[i - 2] + v[i - 1]);
}
cin >> input1;
for (int i = 0; i < input1; i++) {
cin >> input2;
cout << v[input2] << endl;
}
}
문제 상에는 1, 2, 3의 합으로 나타낼 수 있는 수를 구하라고 하여,
1 = 0
2 = 1 (1+1)
3 = 3 (1+1+1 , 1+2 , 2+1)
... 로 생각하여 답을 찾는데 시간이 걸렸다.
1 = 1 (1)
2 = 2 (1+1 , 2)
3 = 4 (1+1+1 , 1+2 , 2+1 , 3)
... 로 생각을 하니, 답을 찾을 수 있었다.
4 = 1 + 2 + 4 = 7
5 = 2 + 4 + 7 = 13
6 = 4 + 7 + 13 = 24
7 = 7 + 13 + 24 = 44
...