다이나믹 프로그래밍 : 메모리를 적절히 사용하여 수행 시간 효율성을 높이는 방법
# 피보나치 수열 단순 재귀
def fibo(x):
if x == 1 or x == 2:
return 1
return fibo(x - 1) + fibo(x - 2)
print(fibo(4))
탑다운(하향식) 기법 : 메모이제이션(memoization)
# 피보나치 수열 : 탑다운 다이나믹 프로그래밍
d = [0] * 100
def fibo(x):
if x == 1 or x ==2:
return 1
if d[x] != 0:
return d[x]
d[x] = fibo(x - 1) + fibo(x - 2)
return d[x]
print(fibo(99))
보텀업(상향식) 기법 : 작은 문제들을 해결하고 저장하고, 큰 문제를 풀 때 사용
# 피보나치 수열 : 보텀업
d = [0] * 100
d[1] = 1
d[2] = 1
n = 99
for i in range(2, n + 1):
d[i] = d[i - 1] + d[i - 2]
print(d[n])