지나가던 개발자

[Python] 백준 4150번(피보나치 수) 문제 풀이 본문

PS/Python

[Python] 백준 4150번(피보나치 수) 문제 풀이

KwonYongHyeon 2022. 9. 4. 00:26

 

import sys
sys.setrecursionlimit(10**6)

def nth_fibonacci(n, lookup):
    if n <= 1:
        return n
    if n not in lookup:
        lookup[n] = nth_fibonacci(n - 1, lookup) + nth_fibonacci(n - 2, lookup)
    return lookup[n]

print(nth_fibonacci(int(input()), {}))

 

내가 예전에 깃허브에 useful_defs라는 것을 만들어 놓은 적이 있다. PS하기 편하게 자주 사용되는 함수들을 넣어 놓은 건데, 이번에 그 중 nth_fibonacci라는 함수를 사용했다.

 

https://github.com/kwonyonghyeon/useful_defs/blob/main/Python/nth_fibonacii().py 

 

GitHub - kwonyonghyeon/useful_defs: 여러가지 코드에 쓸 함수들입니다. 제가 쓰려고 만들어놨지만 이 글

여러가지 코드에 쓸 함수들입니다. 제가 쓰려고 만들어놨지만 이 글을 보시는 여러분도 쓰셔도 좋습니다. 만약 제가 짠 코드보다 효율적인 알고리즘이 있다면 코멘트 해주시면 바로바로 수정하

github.com

 

1번줄과 2번줄은 무슨 뜻이냐면 Python이 정한 최대 재귀 깊이를 바꾸라는 뜻이다. 처음에는 1번줄과 2번줄 없이 제출했는데, 그러니까 RecursionError라는 정말 듣도 보도도 못한 이상한 에러가 떠서 검색해보니 저렇게 재귀 깊이를 바꾸면 된다길래 그렇게 했더니 됐다.

 

https://help.acmicpc.net/judge/rte/RecursionError

 

Comments