본문 바로가기

BOJ 알고리즘 (패캠)/자료구조, 구현

2747번: 피보나치 수 (구현, 재귀) - Fastcampus

www.acmicpc.net/problem/2747

 

2747번: 피보나치 수

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

www.acmicpc.net

# 반복
def fibo(n):
    a, b = 0, 1
    for _ in range(n-1):
        a, b = b, a+b
    return b


# 재귀
def fibo(n):
    if n <= 1:
        return n
    return fibo(n-1) + fibo(n-2)


# DP
def fibo(n):
    ck = [0] * (n+1)
    ck[0] = 0
    ck[1] = 1
    for i in range(2, n+1):
        ck[i] = ck[i-1] + ck[i-2]
    return ck[n]


n = int(input())
print(fibo(n))