백준 15624번 바로가기

나의 풀이

f = [0] + [1]*(n:=int(input()))

if n > 2:
  for i in range(2,n+1):
    f[i] = (f[i-1] + f[i-2])%1000000007

print(f[n])

고수의 풀이

a,b=0,1
for _ in range(int(input())):a,b=b,(a+b)%(10**9+7)
print(a)

출처

CODE REVIEW

  1. 피보나치 수열 문제들과 해결 방법 동일.
  2. 마지막에만 1000000007로 나눗셈을 하면 메모리 초과 에러가 발생하기 때문에 매번 저장 할 때마다 나누어주어야 한다. (너무 큰 숫자가 저장되는걸 방지)
  3. 고수의 풀이에서 a,b=b,a+b처럼 작성하는 방법도 참고!