최대 1 분 소요

문제 링크

내 풀이

def solution(n):
    f = [None] * 100001
    f[0] = 0
    f[1] = 1
    for i in range(2, n+1):
        f[i] = f[i-1] + f[i-2]
        
    return f[n] % 1234567

다른 풀이

def solution(n):
    
    pre = 0 # 이전 피보나치 수를 저장하는 변수 
    current = 1 # 현재 피보나치 수를 저장하는 변수
    
    # 2부터 n까지 순회
    for i in range(2, n+1):
        
        # 현재 피보나치 수는 이전 두 피보나치 수의 합
        # 이전 피보나치 수는 갱신하기 전의 현재 피보나치 수
        current, pre = current + pre, current
    
    # n번째 피보나치 수를 1234567로 나눈 나머지를 반환
    return current % 1234567
출처: https://1ets-just-do-it.tistory.com/125 [파이썬은 신이야🔥🔥🔥:티스토리]

풀이 해석

  • 피보나치 함수의 특성을 이용해 현재 피보나치 값과 이전의 두 값들의 합을 계속해서 최신화 하였다

배울 점

  • 배열을 활용하지 않고 값을 최적화하는 방식을 이용한 사고

댓글남기기