분할 정복 (Divide and Conquer) 설명:
분할 정복(Divide and Conquer) 전략은 큰 문제를 더 작은 하위 문제들로 나눈 뒤, 각 하위 문제를 독립적으로 해결하고, 이를 결합하여 원래의 문제를 해결하는 방법입니다. 분할 정복 전략은 주로 재귀적으로 구현됩니다.
분할 정복의 3가지 주요 단계:
대표적인 분할 정복 알고리즘:
자바스크립트로의 병합 정렬 구현 예:
function mergeSort(arr) {
if (arr.length <= 1) return arr;
const mid = Math.floor(arr.length / 2);
const left = mergeSort(arr.slice(0, mid));
const right = mergeSort(arr.slice(mid));
return merge(left, right);
}
function merge(left, right) {
let result = [];
let leftIndex = 0, rightIndex = 0;
while (leftIndex < left.length && rightIndex < right.length) {
if (left[leftIndex] < right[rightIndex]) {
result.push(left[leftIndex]);
leftIndex++;
} else {
result.push(right[rightIndex]);
rightIndex++;
}
}
return result.concat(left.slice(leftIndex)).concat(right.slice(rightIndex));
}
console.log(mergeSort([38, 27, 43, 3, 9, 82, 10])); // 출력: [ 3, 9, 10, 27, 38, 43, 82 ]
분할 정복 전략은 여러 문제에 대한 효율적인 해결 방법을 제공하며, 종종 재귀적 접근 방식과 결합되어 사용됩니다.