반갑습니다!

[백준] 9507 Generations of Tribbles 본문

알고리즘 문제 풀이

[백준] 9507 Generations of Tribbles

김덜덜이 2020. 6. 21. 17:24

풀이

일반적인 피보나치 수열 문제를 풀 듯이 동적 계획법을 사용하면 쉽게 해결할 수 있다. 이 때 최대값이 int 범위를 벗어나기 때문에 long long으로 선언해야 해결할 수 있다.

코드

#include <iostream>
#include <vector>
using namespace std;

vector<long long> fib;

long long fibonacci(int n) {
    long long& ret = fib[n];
    if (ret != -1) return ret;
    if (n < 2) return ret = 1;
    if (n == 2) return ret = 2;
    if (n == 3) return ret = 4;
    else return ret = fibonacci(n - 1) + fibonacci(n - 2) + fibonacci(n - 3) + fibonacci(n - 4);
}

int main() {
    int t;
    cin >> t;
    fib = vector<long long>(68, -1);
    while (t--) {
        int n;
        cin >> n;
        cout << fibonacci(n) << '\n';
    }
    return 0;
}

'알고리즘 문제 풀이' 카테고리의 다른 글

[프로그래머스] 키패드 누르기  (0) 2020.07.05
[백준] 10164 격자상의 경로  (0) 2020.06.26
[백준] 2630 색종이 만들기  (0) 2020.06.08
[백준] 1735 분수 합  (0) 2020.06.04
[백준] 17213 과일 서리  (0) 2020.05.30