학습 일자 : 2023.04.22
현재 상황에서 가장 좋은 것을 고르는 알고리즘
탐욕 알고리즘은 현 상황에서 가장 좋은 방법을 우선적으로 수행하기 때문에 언제나 최적의 해를 구하는 것은 아님 (동적 계획법은 최적의 해를 구하기 때문에 동적 계획법보다는 덜 효율적임)
[탐욕 알고리즘 과정 예시]
| <편의점 점원의 거스름돈 줄이기> ❓거스름돈을 줄 때 어떻게 하면 손님에게 주는 지폐와 동전의 개수를 최소한으로 줄일 수 있을까?
만약, 손님이 1,200원짜리 물건을 구매하고 2,000원을 지불했다면, 거스름돈으로 다음과 같이 줄 수 있다.
1. 10원 x 80
2. 100원 x 8
3. 500원 x 1 + 100원 x 3
⇒ 거스름돈을 3번으로 줄 때 돈전의 개수를 가장 최소한으로 사용할 수 있음.
⇒ 탐욕 알고리즘이 언제나 최적의 상황으로 나오는 것은 아님!
만약, 400원짜리 동전이 새로 나온다면, (500원 x 1 + 100원 x 3)보다는 (400원 x 2)가 가장 최적의 해이다. (동전의 개수가 가장 적음).
하지만, 탐욕 알고리즘을 사용한다면 결과는 언제나 (500원 x 1 + 100원 x 3)으로 나올 것이다. 동전의 종류가 500원, 400원, 100원… 이렇게 있는 상황에서 가장 좋은 것(=가장 큰 단위)는 500원이기 때문에 500원을 먼저 체크할 것이기 때문이다.