Development/Algorithm

[백준] 2748번: 피보나치 수 2 (python)

jstar0525 2021. 5. 5. 18:35
반응형

www.acmicpc.net/problem/2748

 

2748번: 피보나치 수 2

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

def iter(n, cache):
    if n < 2:
        cache[n] = n
        return cache[n]
    if cache[n] != -1:
        return cache[n]

    cache[n] = iter(n-1, cache) + iter(n-2, cache)

    return cache[n]

def fibonacci(n):
    cache = [-1 for _ in range(n+1)]

    return iter(n, cache)

if __name__ == '__main__':
    n = int(input())
    print(fibonacci(n))
반응형