본문 바로가기
알고리즘/분할 정복

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

by Dev.Andy 2023. 3. 29.

목차

    머리말

    들어가기 전에

    정렬 알고리즘

    저번에 포스팅한 정렬 알고리즘에서 버블 정렬과 선택 정렬, 삽입 정렬에 대해 알아 보았다.

    효율성

    이 세 가지 정렬 알고리즘은 코드가 직관적이긴 하지만 데이터 크기 n에 대한 이중 for 문으로 되어 있기에 굉장히 비효율적이다.

    분할 정복 알고리즘

    이들의 시간복잡도는 $O(n^2)$이다. 보다 효율적인 정렬 알고리즘을 배우기 위해 분할 정복(Divide and Conquer)에 대해 알아 보자.

    배우기 전 알아야 할 개념

    재귀

    그렇다면 위의 3단계는 어떻게 구현할 수 있을까? 분할과 정복, 통합은 재귀적으로(recursively) 하는 것이다.

    따라서 재귀 알고리즘에 대해 먼저 알아야 분할 정복 알고리즘을 제대로 알 수 있다.

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

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

    Divide and conquer algorithms (article) | Khan Academy

    분할 정복은 크게 3단계로 나눌 수 있다.

    단계

    1. 분할(Divide)

    • 주어진 문제(problem)를 같은 형태의 작은 문제(subproblem)로 나눈다.
    • 문제가 해결이 가능할 때까지 분할을 재귀적으로(recursively) 반복한다.

    2. 정복(Conquer)

    충분히 나누어져서 해결 가능한 작은 문제를 재귀적으로 해결한다.

    3. 통합(Combine)

    작은 문제에서 구한 해답을 서로 합쳐서 본래의 문제에 대한 해답을 도출한다.

    • 작성일 2023-03-29 수
    • 수정일 2023-12-27 수
     

     

    '알고리즘 > 분할 정복' 카테고리의 다른 글

    퀵 정렬(Quick Sort) in Python  (0) 2023.04.04
    합병 정렬(병합 정렬; Merge Sort) in Python  (0) 2023.03.30

    댓글