Day 4: 탐욕법(Greedy) & 이분탐색(Binary Search)
이번 섹션에서는 두 가지 핵심 알고리즘 기법을 다룬다.
탐욕법은 각 단계에서 최적이라고 판단되는 선택을 통해 문제의 해답에 접근하는 방법이며, 이분탐색은 정렬된 배열 내에서 빠르게 특정 요소를 찾는 알고리즘이다.
1. 탐욕법 (Greedy)
1.1 기본 개념
-
정의:
탐욕법은 문제를 여러 단계로 나눈 후, 각 단계에서 가장 최적의 선택(탐욕적 선택, Greedy Choice)을 하여 전체 해답을 구하는 접근법이다. -
특징:
- 각 단계에서 지역 최적해를 선택하여 문제를 해결한다.
- 문제에 따라 전체 최적해(Global Optimum)를 보장할 수도, 보장하지 못할 수도 있다.
- 탐욕 선택 속성(Greedy Choice Property)과 최적 부분 구조(Optimal Substructure) 조건이 만족되어야 한다.
1.2 대표 문제 및 예시
-
거스름돈 문제:
동전의 단위가 서로 배수 관계에 있을 경우, 가장 큰 단위부터 선택하여 최소 동전 수로 거스름돈을 만드는 문제.
예시: 500원, 100원, 50원, 10원 동전이 있을 때 760원을 거슬러 주기 위해, 500원 1개, 100원 2개, 50원 1개, 10원 1개를 사용하는 방식. -
회의실 배정 문제:
회의 시작과 종료 시간이 주어졌을 때, 회의실을 최대한 효율적으로 배정하기 위해 종료 시간이 가장 빠른 회의를 먼저 선택하는 방식.
이 경우, 종료 시간이 빠른 회의를 선택하면 이후 선택 가능한 회의의 수가 최대화된다.
1.3 탐욕법의 한계 및 고려사항
-
전역 최적해 미보장:
탐욕법은 각 단계에서 최선의 선택을 하지만, 일부 문제에서는 전체 문제에 대해 최적의 해답을 보장하지 않는다.
예를 들어, 동전 단위가 일반적이지 않거나, 선택 기준이 명확하지 않은 문제에서는 탐욕법이 실패할 수 있다. -
적용 조건:
탐욕법이 효과적으로 작동하기 위해서는 문제에 탐욕 선택 속성과 최적 부분 구조가 존재해야 한다.
이러한 조건이 충족되지 않으면, 동적 계획법(Dynamic Programming) 등 다른 기법을 고려해야 한다.