그리디 알고리즘이란?
: 기본 조건을 만족시키는 가능한 모든 해결책 중에서 가장 좋은 해결책으로, 근시안적으로 가장 좋아보이는 것을 선택하고, 선택한 뒤에는 절대 뒤로 돌아가지 않는다.
: 여러 종류의 동전이 있고 동전의 개수가 무제한일 때 동전의 개수가 최소가 되게 거슬러주는 것
→ 가장 큰 액면가를 가진 동전을 선택할 경우 총 동전의 개수가 줄어든다.
해당 문제가 그리디 알고리즘인 이유
(거스름돈의 남은 금액보다 크지 않은) 가장 큰 동전을 고른다.
→ 주어진 동전의 액면가만을 사용하여 해결책을 찾는다.
더 나은 선택지가 있더라도 한 번 선택했으면 바꾸지 않는다.
알고리즘
Input: the total change, W output: the total number of coins change ← W, n500 ← 0, n100 ← 0, n50 ← 0, n10 ← 0, n1 ←0 while ( change ≥ 500 ) change ← change-500, n500 ←n500+1 while ( change ≥ 100 ) change ← change-100, n100 ←n100+1 while ( change ≥ 50 ) change ← change-50, n50 ←n50+1 while ( change ≥ 10 ) change ← change-10, n10 ←n10+1 while ( change ≥ 1 ) change ← change-1, n1 ←n1+1 CoinChange = n500+n100+n50+n10+n1