본문 바로가기
백준

[백준] 10870번 : 피보나치 수 5 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 7.
728x90
반응형

 

 

10870번: 피보나치 수 5

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

출력하는 피보나치 수가 20이 최대이므로 20번째까지 피보나치 수를 만들어 리스트에 저장해 두고 입력을 받으면 만들어둔 리스트에서 해당 값을 출력해 주는 방식으로 구현한다.

 

  1. sys.stdin.readline() 함수로 입력받기 위해 sys 모듈을 불러온다. import sys
  2. 피보나치 수를 만들어줄 함수를 구현한다. def Func(num1, num2, count)
  3. 만약 20번째 피보나치 수를 만들면 종료한다. if (count == 20): return
  4. 그게 아니라면 피보나치 수 번호를 1 증가시킨다. count += 1
  5. 피보나치 수를 저장해 둔 리스트에 새 피보나치 수를 만들어 추가한다. F_Num.append(num1 + num2)
  6. 다시 피보나치 수를 만드는 함수를 호출하여 피보나치 수를 계속 만든다. Func(num2, num1 + num2, count)
  7. 먼저 피보나치 수의 초기값인 0번째 값 0과 1번째 값 1을 추가한 리스트를 생성한다. F_Num = [0, 1]
  8. 초기 피보나치 수를 활용하여 다음 피보나치 수를 만들어 리스트에 추가하는 함수를 호출해 20번째 피보나치 수까지 리스트에 저장한다. Func(F_Num[0], F_Num[1], 1)
  9. 출력할 피보나치 수 위치를 입력받는다. n = int(sys.stdin.readline())
  10. 입력받은 위치의 피보나치 수 값을 출력한다. print(F_Num[n])
반응형

3. 소스코드

import sys

def Func(num1, num2, count):
    if (count == 20):
        return
    else:
        count += 1
        F_Num.append(num1 + num2)
        
        Func(num2, num1 + num2, count)

F_Num = [0, 1]
Func(F_Num[0], F_Num[1], 1)

n = int(sys.stdin.readline())

print(F_Num[n])
728x90
반응형