✏️ STUDY/📍 coding

[Python 기초] 문제 2. 피보나치 수열

나무울 2022. 11. 20. 21:51

 

 

[ 문제 ]

피보나치 수열의 1번 항과 2번 항은 각각 1입니다. 3번 항부터는 바로 앞 두 항의 합으로 계산됩니다. 예를 들어서 3번 항은 1번 항(1)과 2번 항(1)을 더한 2이며, 4번 항은 2번 항(1)과 3번 항(2)을 더한 3입니다.

피보나치 수열의 첫 50개 항을 차례대로 출력하는 프로그램을 작성해 보세요.

 


 

[ 내가 작성한 코드 ]

a = 1
b = 1
n = 0

while n < 25:
    print(a)
    a += b
    print(b)
    b += a
    n += 1

 

[ 해설 코드 ]

previous = 0
current = 1
i = 1

while i <= 50:
    print(current)
    temp = previous  # previous를 임시 보관소 temp에 저장
    previous = current
    current = current + temp  # temp에는 기존 previous 값이 저장돼 있음
    i += 1

 


 

[ 보충 설명 ]

  • 피보나치 수열의 항들을 순서대로 출력하기 위해서는 늘 마지막 두 항을 변수에 보관해야 한다.
  • previous = current를 하면, 기존의 previous 값을 잃어버리므로 임시 보관소 역할을 할 변수(temp)를 만들어야 한다.
  • previous, current = current, current + previous
    → temp를 사용하지 않고 깔끔하게 쓰는 방법이지만, 대부분 프로그래밍 언어에서 제공되지 않는 문법이다.