티스토리 뷰

1. 문제

 

 

 

2. 정답 코드

def fibo(n) :
    if n == 0 :
        return 0
    elif n == 1 :
        return 1
    else :
        l, r = 0, 1
        for i in range(n-1) :
            l, r = r, (l + r) % 1234567
            
        return r
    
def solution(n):
    answer = fibo(n)
    return answer
  • 재귀 함수 사용 시 시간 초과 및 런타임 에러 발생 ➡️ for문을 통한 다이나믹 프로그래밍 사용
  • 8번째 줄: (l + r) % 1234567에서 1234567을 나누는 이유는 다른 언어의 경우 오버 플로우가 발생할 수도 있기 때문
    • { f(n-1) + f(n-2) } % 1234567은 f(n-1) % 1234567 + f(n-2) % 1234567과 같음
728x90