토픽 18 / 82
분할 정복 (Divide and Conquer)
분할 정복 (Divide and Conquer)
문제를 작은 부분 문제로 나누어 재귀적으로 해결한 후 결과를 합쳐 원래 문제를 해결하는 알고리즘 설계 기법
목적: 복잡한 문제 단순화, 효율적 해결, 병렬화 가능
특징: 재귀, 3단계(분할·정복·결합), 독립 부분 문제
3단계
조건: 부분 문제가 독립적, 결합 가능
시간 복잡도: 주로 O(n log n), 재귀 관계식(Master Theorem)
Master Theorem: T(n) = aT(n/b) + f(n) → O(n^log_b(a)), O(n^log_b(a) log n), O(f(n))
장점: 효율적(O(n log n)), 병렬화 가능, 복잡한 문제 단순화
단점: 재귀 오버헤드, 스택 깊이, 기저 케이스 중요
적용사례: 병합 정렬, 퀵 정렬, 이진 검색, 큰 정수 곱셈(Karatsuba), FFT, 행렬 곱셈(Strassen)
비교: 분할 정복(독립/재귀/결합) vs 동적 프로그래밍(중복/메모이제이션) vs 탐욕(지역 최적)
연관: 재귀, 병합 정렬, 퀵 정렬, 이진 검색, Master Theorem