# 1. Memoization
dp = [0] * 100 #소문제 결과가 저장됨
dp[0] = 1
dp[1] = 1
def fib(n):
if dp[n] == 0: #만약 계산이 안되어있으면
dp[n] = fib(n-1) + fib(n-2) #재귀
return dp[n] # 계산이 된 값이 있으면, 그대로 반환
# 2. Tabulation
def fib(n):
dp = [0] * (n+1)
dp[0] = 1
dp[1] = 1
for i in range(2, n+1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]
def stairs(n):
s = [0] * (n+1)
s[0] = 1
s[1] = 2
if n < 3:
return s[n-1]
for i in range(2, n):
s[i] = s[i-1] + s[i-2]
return s[n-1]
관련 게시물