def fib_memo(n, cache):
# 여기에 코드를 작성하세요
# base case
if n < 3:
return 1
# 이미 n번째 피보나치를 계산했으면:
# 저장된 값을 바로 리턴한다
if n in cache:
return cache[n]
# 아직 n번째 피보나치 수를 계산하지 않았으면:
# 계산을 한 후 cache에 저장
cache[n] = fib_memo(n - 1, cache) + fib_memo(n - 2, cache)
# 계산한 값을 리턴한다
return cache[n]
def fib(n):
# n번째 피보나치 수를 담는 사전
fib_cache = {}
return fib_memo(n, fib_cache)
# 테스트 코드
print(fib(10))
print(fib(50))
print(fib(100))
'Algorithm > 코딩테스트 스터디' 카테고리의 다른 글
피보나치수열 공간 최적화 (0) | 2023.11.06 |
---|---|
피보나치 수열 Tabulation (0) | 2023.11.06 |
합병정렬 구현하기 (0) | 2023.11.03 |
퀵정렬 구현하기 (2) | 2023.11.03 |
주어진 배열 위치 찾기 (0) | 2023.11.03 |