본문 바로가기
🔅코딩테스트 공부🔅/❗백준

[백준] 10870번 피보나치 수 5(with python)

by 윤무무 2023. 1. 10.

https://www.acmicpc.net/problem/10870

 

10870번: 피보나치 수 5

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

www.acmicpc.net

 

문제 : n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.

 

1. 내가 작성한 코드
n = int(input())

x,y,z = 0,1,0

for i in range(0,n+1):
  if i == 0:
    z = 0

  elif i == 1:
    z = 1

  elif i == 2:
    z = x + y

  else :
    x = y
    y = z
    z = x + y
    
print(z)

피보나치는 재귀함수를 활용하는 대표적인 .. 문제인데.. 수학시간에 열심히 배운 건데..

왜 for문이랑 if문 반복해서 저렇게 더럽게 ?! 만든 거지?! 

 

활용할 수 있을 때 사용하기 ❗재.귀.함.수 

 

2. 모범답안

 

재귀 이용

def repeat(n) :
  if n <= 1:
    return n
  return repeat(n-1) + repeat(n-2)

n = int(input())
print(repeat(n))

 

DP 이용

n = int(input())

dp = [i for i in range(n+1)]

for i in range(2,n+1):
  dp[i] = dp[i-1] + dp[i-2]
print(dp)

댓글