[CS기초] 분할 정복(Divide and Conquer)

2025. 3. 25. 10:53·크래프톤 정글/CS기초(키워드, 개념정리)

분할 정복 (Divide and Conquer) 개요

분할 정복은 문제를 더 작은 하위 문제로 나누고 각각을 해결한 뒤 결과를 합쳐 원래 문제를 해결하는 알고리즘인데요. 문제를 자연스럽게 나눌 수 있거나, 하위 문제 간의 중복 계산이 없는 복잡한 문제를 효율적으로 해결하는 데 자주 사용됩니다.

 

 

분할 정복의 3단계

분할 (Divide)

  • 해결할 문제를 동일하거나 유사한 형태의 더 작은 하위 문제(Subproblem)로 나누는 과정
  • 하위 문제는 원래 문제보다 크기가 작아야 하며, 더 이상 나눌 수 없을 때까지 분할해야 한다

정복 (Conquer)

  • 나눠진 하위 문제를 개별적으로 해결하는 과정
  • 하위 문제의 크기가 충분히 작으면 직접 계산과 같은 직관적인 방식으로 해결한다

결합 (Combine)

  • 하위 문제의 해결 결과를 합쳐 원래 문제의 해답을 구하는 과정

 

분할 정복의 특징

재귀적 접근

  • 문제를 점점 더 작은 단위로 나누는 과정에서 주로 재귀 함수가 사용된다

점화식을 통한 시간 복잡도 분석

  • 분할과 정복 알고리즘은 반복적으로 문제를 나누기 때문에, 대개 점화식으로 시간 복잡도 분석이 가능하다

 

 

분할 정복의 예시

  • 합병 정렬 (Merge Sort)
  • 퀵 정렬 (Quick Sort)
  • 이진 탐색 (Binary Search)

 

 

분할 정복의 장단점

분할 정복의 장점

  • 복잡한 문제를 간단하고 체계적으로 해결 가능하다
  • 효율적인 알고리즘 설계가 가능하다
  • 분할된 하위 문제를 독립적으로 처리할 수 있어 병렬 처리에 적합하다

분할 정복의 단점

  • 재귀 호출이 많아지면 스택 오버플로우의 위험이 있다
  • 하위 문제의 결합 과정이 비효율적일 경우 성능이 저하될 수 있다

 

저작자표시 비영리 변경금지 (새창열림)

'크래프톤 정글 > CS기초(키워드, 개념정리)' 카테고리의 다른 글

[CS기초] 스택(Stack), 큐(Queue)  (0) 2025.03.26
[중간정리] 2주차 - 해시 충돌과 체이닝, 병합 정렬, 큐, 캐시 메모리, 프로세스/스레드  (0) 2025.03.25
[CS기초] 이분 탐색(Binary Search)  (0) 2025.03.25
[중간정리] 1주차 - 재귀 함수, 피보나치 수열, 퀵 정렬, CPU의 PC/ALU  (0) 2025.03.20
[알고리즘] 백트래킹 기본 예제 코드(순열, 조합)  (0) 2025.03.20
'크래프톤 정글/CS기초(키워드, 개념정리)' 카테고리의 다른 글
  • [CS기초] 스택(Stack), 큐(Queue)
  • [중간정리] 2주차 - 해시 충돌과 체이닝, 병합 정렬, 큐, 캐시 메모리, 프로세스/스레드
  • [CS기초] 이분 탐색(Binary Search)
  • [중간정리] 1주차 - 재귀 함수, 피보나치 수열, 퀵 정렬, CPU의 PC/ALU
그냥사람_
그냥사람_
IT 관련 포스팅을 합니다. 크래프톤 정글 8기 정경호
  • 그냥사람_
    그냥코딩
    그냥사람_
  • 전체
    오늘
    어제
    • 글 전체보기 N
      • 크래프톤 정글 N
        • 로드 투 정글(입학시험)
        • CS기초(키워드, 개념정리) N
        • 컴퓨터구조(CSAPP)
        • Code 정글(C언어) N
        • 마이 정글(WIL, 에세이)
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
그냥사람_
[CS기초] 분할 정복(Divide and Conquer)
상단으로

티스토리툴바