일단 또 문제를 제대로 처 안읽음 + 빡대가리임.
일단
이렇게 싹다 적어서 규칙을 찾아준다.
#include <iostream>
#include <cstring>
using namespace std;
int input;
int cache[12];
int SumPath(int num)
{
// 기저
if (num == 1) return 1;
if (num == 2) return 2;
if (num == 3) return 4;
// 캐시
int& ret = cache[num];
if (ret != -1) return ret;
// 구하기
return ret = SumPath(num - 1) + SumPath(num - 2) + SumPath(num - 3);
}
int main()
{
memset(cache, -1, sizeof(cache));
int loop;
cin >> loop;
for (int i = 0; i < loop; ++i)
{
cin >> input;
cout << SumPath(input) << endl;;
}
return 0;
}
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int main()
{
int T, n;
cin >> T;
vector<int> dp(12, 0);
dp[1] = 1;
dp[2] = 2;
dp[3] = 4;
for (int i = 4; i < 12; ++i)
dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
for (int i = 0; i < T; ++i)
{
cin >> n;
cout << dp[n] << '\n';
}
return 0;
}