[알고리즘] Divide and Conquer(분할 정복)

김성록·2023년 2월 21일

알고리즘

목록 보기
15/18

분할 정복 알고리즘에 대해 설명해보세요


분할 정복 알고리즘이란?

  • 분할 정복 알고리즘은 하나의 큰 문제를 여러 개의 충분히 작은 문제로 분할하여 해결한 후 다시 합병하여 문제를 해결하는 알고리즘 방식이다.

분할 정복 알고리즘의 조건

  • 분할 정복 알고리즘을 사용하기 위해 필요한 조건들이 있다.
    • 문제를 분할하는 과정에서, 큰 문제와 작은 문제의 구조가 같아야 한다. 즉 풀이법이 같아야 한다.
    • 작은 문제들 간에는 서로 영향을 주면 안 된다. 서로 영향을 주게 되면 푸는 방법이나 순서에 따라 결과가 달라질 수 있기 때문이다.

분할 정복의 작동 방식

  • 일반적으로 세 단계로 나누어 진행된다.

    • 분할(Divide)
      : 기존 문제가 비슷한 구조의 더 작은 문제로 분할이 가능할 때 까지 나눈다.
    • 정복(Conquer)
      : 각 작은 문제들을 재귀적으로 해결하는 단계이다. 더 이상 나눌 수 없는 상황이 되면 문제를 해결한다.
    • 병합(Combine)
      : 정복(Conquer)한 문제들을 병합하여 기존의 문제의 답을 찾는다.

분할 정복의 특징

  • 분할된 작은 문제는 기존의 문제와 성격이 동일하다.

  • 분할된 문제는 서로 독립적이다.

  • 병합 정렬(Merge Sort)과 퀵 정렬(Quick Sort), 이진 탐색(Binary Search) 등에 사용된다.


결론

분할 정복 알고리즘은 기존의 문제를 여러 개의 작은 문제로 나누어 해결한 뒤 결합하여 원래 문제를 해결하는 방식의 알고리즘입니다. 일반적으로 분할, 정복, 병합 세 단계를 거쳐 문제를 해결하며, 각 단계에서는 분할은 큰 문제를 작은 문제로 나누고, 정복은 각 작은 문제를 재귀적으로 해결하며 병합은 해결한 문제들을 병합하여 기존의 문제의 답을 찾는 과정을 가집니다. 분할된 작은 문제는 기존의 문제와 구조가 같아야 하며, 분할된 문제들끼리는 서로 독립적이어야 하는 조건이 있습니다. 이를 응용한 알고리즘으로 병합 정렬과 퀵정렬, 이진 탐색 등이 있습니다.

profile
예비 개발자

0개의 댓글