MinChur

알고리즘 설계 기법: 동적 계획법(DP)과 분할 정복

|
1 min read

복잡한 문제를 효율적으로 해결하기 위한 두 가지 핵심 패러다임인 동적 계획법과 분할 정복의 차이점과 대표 사례들을 정리합니다.

1. 동적 계획법 (Dynamic Programming)

DP의 핵심은 **"기억하며 풀기"**입니다. 작은 문제들이 반복해서 나타날 때, 그 결과를 저장(Memoization)해 두었다가 재사용하여 중복 계산을 획기적으로 줄입니다.

  • 성립 조건: 최적 부분 구조(작은 문제의 답으로 큰 문제의 답을 구함)와 중복되는 부분 문제(같은 작은 문제가 반복됨)가 있어야 합니다.
  • 대표 예시: 피보나치 수열, 배낭 문제(Knapsack), 최장 공통 부분 수열(LCS)

2. 분할 정복 (Divide and Conquer)

분할 정복의 핵심은 **"쪼개서 각각 해결하기"**입니다. 문제를 독립적인 부분 문제로 나누고, 각각을 해결한 뒤 다시 합칩니다. DP와 달리 부분 문제들이 서로 겹치지 않습니다.

  • 대표 예시: 퀵 정렬, 병합 정렬, 이진 탐색

3. 한눈에 비교하기

구분동적 계획법 (DP)분할 정복
핵심 아이디어부분 문제의 해를 저장 및 재활용독립적인 부분 문제로 분할 후 결합
중복성부분 문제가 반복적으로 발생함부분 문제가 중복되지 않음
방식주로 상향식(Bottom-up)주로 하향식(Top-down, 재귀)