코딩 테스트/백준

[Python] 백준 24416 알고리즘 수업 - 피보나치 수 1

위시리 2025. 1. 6. 16:39

 

문제 분석

  • 재귀 / 동적 함수 호출 횟수 출력

 

정답 코드

1차 - 실패.. 어떻게 return이 있는데 함수 호출을 하면서 또 함수 호출된 횟수에 대해서 return을 할 수 있지?

import sys
input = sys.stdin.readline

n = int(input())

# 피보나치 재귀 호출
def fib(n, cnt_rev):
    cnt_rev += 1
    if (n == 1 or n == 2):
        return 1
    else :
        return fib(n-1) + fib(n-2)

# 피보나치 dp
def fibonacci(n, cnt_dp) :
    cnt_dp += 1
    if n <= 2 :
        return 1
    f = [0] * (n+1) # 0부터 n까지의 배열 생성
    f[1] = f[2] = 1
    for i in range(3, n+1) :
        f[i] = f[i-1] + f[i-2]
    return f[n]

fib(n, 0)
fibonacci(n, 0)

 

다른 사람 코드 1

구현하고 구하는게 아니라..

def fib(n):
    f = [0] * (n+1)
    f[1] = f[2] = 1
    for i in range(3,n+1):
        f[i] = f[i-1]+f[i-2]
    return f[n]
    
def fibonacci(n):
    return n-2

n = int(input())
print(fib(n), fibonacci(n))