설명
n번째 피보나치 수를 출력하는 문제이다.
풀이
피보나치 수는 DP 알고리즘을 사용하는 것이 일반적이고 더 효율적이다.
Solution
방식 1. Bottom-up(하향식)
import sys
input = sys.stdin.readline
n = int(input())
dp = [0]*(n + 1)
dp[1] = 1
#bottom-up
def fibo(n):
for i in range(2, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n]
print(fibo(n))
방식 2. Top-down(상향식)
import sys
input = sys.stdin.readline
n = int(input())
dp = [0] * (n+1)
#Top-Down
def fibo(n):
if n == 1 or n == 2:
return 1
if dp[n] == 0:
dp[n] = fibo(n - 1) + fibo(n - 2)
return dp[n]
print(fibo(n))
'BOJ 코딩테스트 > Bronze' 카테고리의 다른 글
BOJ 3046번 : 삼각형과 R2 (Python/구현/Bronze 4) (0) | 2024.03.12 |
---|---|
BOJ 5073번 : 삼각형과 세 변 (Python/구현/Bronze 3) (0) | 2024.03.06 |
BOJ 2587번 : 대표값2 (Python/Bronze 2) (0) | 2023.05.04 |
BOJ 6359번 : 만취한 상범 (Python/Bronze 2) (0) | 2023.04.13 |
BOJ 1547번 : 공 (Python/Bronze 3) (0) | 2023.04.12 |