[Python] cache를 사용한 dp구현

변도진·2025년 10월 4일

Python

목록 보기
14/16

cache

functools에는 cache가 있다.
이는 deco한 함수의 값을 저장 후 함수를 실행하지 않고 돌려준다.

from functools import cache

예시

from functools import cache

@cache
def f():
    print("hey")

f() 
f() # cache 값 가져옴
f() # cache 값 가져옴
hey

활용

이를 이용하여 dp를 구현 가능하다.

예시

피보나치 수열을 구하는 함수

cache O

from functools import cache

call = 0

@cache
def fibo(n):
    global call
    call += 1

    if n == 0:
        return 0
    if n == 1:
        return 1
    return fibo(n-1) + fibo(n-2)

print(fibo(30))
print(call) # 함수 호출 회수
832040
31

cache X

from functools import cache

call = 0

def fibo(n):
    global call
    call += 1

    if n == 0:
        return 0
    if n == 1:
        return 1
    return fibo(n-1) + fibo(n-2)

print(fibo(30))
print(call)함수 호출 회수
832040
2692537
profile
낚시하고 싶다.

0개의 댓글