알고리즘 연습/동적 계획법

[🥈3 / 백준 9507 / 파이썬] Generations of Tribbles

김세진 2022. 1. 7. 15:48
반응형

꿍은 군대에서 진짜 할짓이 없다. 그래서 꿍만의 피보나치를 만들어보려고 한다. 기존의 피보나치는 너무 단순해서 꿍은 좀더 복잡한 피보나치를 만들어보고자 한다. 그래서 다음과 같은 피보나치를 만들었다. 꿍만의 피보나치 함수가 koong(n)이라고 할 때,

 

 

이다.

여러분도 꿍 피보나치를 구해보아라.

입력

입력의 첫 번째 줄을 테스트 케이스의 개수 t (0 < t < 69)가 주어진다. 다음 t줄에는 몇 번째 피보나치를 구해야하는지를 나타내는 n(0 ≤ n ≤ 67)이 주어진다.

출력

각 테스트 케이스에 대해, 각 줄에 꿍 피보나치값을 출력하라.

 

예제 입력

8
0
1
2
3
4
5
30
67

예제 출력

1
1
2
4
8
15
201061985
7057305768232953720

 

풀이

 

문제에 점화식이 주어져 있다.

피보나치 DP 문제와 크게 다를것이 없다.

입력에서 요구하는 n번째의 꿍 피보나치 수를 구하지 않았다면, 점화식을 바탕으로 DP를 통해 갱신하고 출력한다.

 

import sys
input = sys.stdin.readline
dp = [1,1,2,4]

for _ in range(int(input())):
    n = int(input())
    for i in range(len(dp)-1,n):
        dp.append(dp[i]+dp[i-1]+dp[i-2]+dp[i-3])
    print(dp[n])
반응형