1. 정의
동적계획법 (DP 라고 많이 부름)
입력 크기가 작은 부분 문제들을 해결한 후, 해당 부분 문제의 해를 활용해서, 보다 큰 크기의 부분 문제를 해결, 최종적으로 전체 문제를 해결하는 알고리즘
상향식 접근법으로, 가장 최하위 해답을 구한 후, 이를 저장하고, 해당 결과값을 이용해서 상위 문제를 풀어가는 방식
Memoization 기법을 사용함
문제를 잘게 쪼갤 때, 부분 문제는 중복되어, 재활용됨
분할 정복
문제를 나눌 수 없을 때까지 나누어서 각각을 풀면서 다시 합병하여 문제의 답을 얻는 알고리즘
하양식 접근법으로, 상위의 해답을 구하기 위해, 아래로 내려가면서 하위의 해답을 구하는 방식
문제를 잘게 쪼갤 때, 부분 문제는 서로 중복되지 않음
2. 공통점과 차이점
공통점
차이점
동적 계획법
분할 정복
3. 동적 계획법 알고리즘 이해
recursive call 활용
def fibo(num):
if num <= 1:
return num
return fibo(num - 1) + fibo(num - 2)
fibo(4)
동적 계획법 활용
def fibo_dp(num):
cache = [ 0 for index in range(num + 1)]
cache[0] = 0
cache[1] = 1
for index in range(2, num + 1):
cache[index] = cache[index - 1] + cache[index - 2]
return cache[num]
fibo(10)