백준 17175번 바로가기

나의 풀이

x,y=1,1
for i in range((n:=int(input()))-1):
  x,y=y,(x+y+1)%1000000007

print(1 if n<2 else y)

CODE REVIEW

  1. 피보나치 수열 함수가 호출되는 횟수를 구하는 문제였다.
  2. fibo(n)을 호출하면 fibo(n-1), fibo(n-2)가 호출되므로, 총 횟수는 1(자기자신) + fibo(n-1) + fibo(n-2)로 구할 수 있다.
  3. f[n]=1+f[n-1]+f[n-2]로 구현해도 되지만, x,y=y,(x+y+1)로 구현하면 메모리를 아낄 수 있다.