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
...
'알고리즘' 카테고리의 다른 글
C++ 알고리즘 - 백준 9461 파도반 수열 (0) | 2025.01.05 |
---|---|
C++ 알고리즘 - 백준 9375 패션왕 신해빈 (0) | 2025.01.05 |
C++ 알고리즘 - 백준 2606 바이러스 (0) | 2025.01.05 |
C++ 알고리즘 - 백준 2579 계단 오르기 (다이나믹 프로그래밍) (0) | 2025.01.05 |
C++ 알고리즘 - 백준 1463 1로 만들기 (다이나믹 프로그래밍) (0) | 2025.01.04 |