문제를 더 작고 쉬운 문제로 분할하여 해결하므로 해결 과정이 간단해지고 대규모 문제를 해결하기 용이하다.
부분 문제들이 독립적이기 때문에 병렬적으로 문제를 해결한다.
📉 분할 정복의 단점
함수를 재귀적으로 호출한다는 점에서 함수 호출로 인한 오버헤드가 발생한다.
✔ 오버헤드란 프로그램의 실행 흐름에서 나타나는 현상으로 예를 들어, 프로그램의 실행 흐름 도중에 동떨어진 위치의 코드를 실행시켜야 할 때 , 추가적으로 시간, 메모리, 자원이 사용되는 현상이다.
스택에 다양한 데이터를 보관하고 있어야 하므로 스택 오버플로우가 발생하거나 과도한 메모리 사용을 하게 된다.
❗ 분할 정복과 동적 프로그래밍의 차이
동적 프로그래밍(Dynamic Programming)과 분할 정복(Divide and Conquer)은 서로 비슷한 알고리즘 기법이지만 ‘목적’과 '적용 대상’이 다르다.
분할정복의 경우는 큰 문제를 작은 문제들로 나누어서 해결해 나아가면서 큰 수의 곱셈, 퀵 정렬 등과 같은 문제를 해결한다.
동적 프로그래밍의 경우, 작은 문제들을 풀면서 그 결과를 저장해 나가고 전체 문제를 해결해 나가면서 최적화 문제나 최단 경로 문제 등의 문제를 해결한다.