파도반 수열 9461

PublicMinsu·2023년 1월 17일
0

문제

접근 방법

숫자를 잘 보면 공식이 보인다.
특정 위치의 숫자는 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이어서 놀랐다. 공식이 하나가 아니었다.

profile
연락 : publicminsu@naver.com

0개의 댓글