1003번: 피보나치 함수

962 단어 pythonpython

import sys
input = sys.stdin.readline

t = int(input())
zero = [1,0,1,1]
one = [0,1,1,2]

for i in range(4,50):
  Z = zero[i-1] + zero[i-2]
  O = one[i-1] + one[i-2]
  zero.append(Z)
  one.append(O)

for i in range(t):
  n = int(input())
  print(zero[n],one[n])

이 문제는 단순히 피보나치 수를 구하는 것이 아닌, N 번째 피보나치 수가 만들어 질 때 까지 0과 1이 얼마나 출력 되는지 알아보는 문제이다.

때문에 zero, one 이라는 리스트를 만들어 i 번째 피보나치 수에 0과 1이 얼마나 출력이 되는지 i 번째 index 에 저장한다.

index 0에서 3까지 미리 리스트에 넣어두고 for 문을 사용해 범위 4부터 50까지의 i 번째 피보나치 수의 0과 1 출력값을 리스트에 저장한다.
(N 이 40보다 작거나 같은 자연수이기에 범위는 range(4, 41)로 잡아도 될 것이다.)

그 후 테스트 케이스 만큼 출력한다.

n = int(input())

P = [0,1,1]

for i in range(1,n+1):
  p = P[1]+P[2]

  P.append(p)
  P.remove(P[0])

print(P[0])

이건 n 번째 피보나치 수를 구하는 코드이다.
(혹시 이게 필요하신 분을 위해서...)

좋은 웹페이지 즐겨찾기