숫자를 잘 보면 공식이 보인다.
특정 위치의 숫자는 2와 3만큼 먼 숫자의 합이다.
그 점을 활용하면 된다.
#include <iostream>
using namespace std;
long long dp[101];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int T, min = 3;
cin >> T;
dp[0] = dp[1] = dp[2] = 1;
while (T--)
{
int N;
cin >> N;
for (int i = min; i < N; ++i)
{
dp[i] = dp[i - 2] + dp[i - 3];
}
if (min < N)
min = N;
cout << dp[N - 1] << "\n";
}
return 0;
}
int 범위는 넘을 것 같아서 long long으로 선언했다.
나는 i-2, i-3으로 풀었는데 다른 사람을 보니 i-1, i-5이어서 놀랐다. 공식이 하나가 아니었다.