현재 상황에서 지금 당장 좋은 것만 골라 탐욕적으로 문제를 해결하는 알고리즘 입니다.
매 상황에서 가장 큰 값 또는 가장 좋은 방법으로 보이는 것을 선택하여 그 선택이 나중에 어떤 영향을 줄지는 고려하지 않습니다. 그래서 항상 최적의 해를 보장 해줄수는 없습니다.
모두가 그리디 알고리즘을 생각하면 가장 머리에서 떠오르는 문제는 거스름돈을 줄 때 동전의 개수를 가장 적게 줄 수 있는 방법을 구하라는 문제일 것이다.
이 문제의 문제해결 아이디어는 최적의 해를 빠르게 구하기위해 가장 큰 화폐부터 돈을 거슬러주는 것이다.
이 문제 해결 아이디어가 최적의 해를 보장하기 위해서는 가지고 있는 동전 중에서 가장 큰 단위가 항상 작은 단위의 배수로 작은 단위의 동전들을 조합해 다른 해가 나올수 없기 때문 입니다.
input = 1270 # 거슬러줘야 하는 금액
count = 0 # 거슬러줄때 동전의 개수
array = [500, 100, 50, 10] # 동전의 종류
for i in array:
count += n//i # 가장 큰 화폐부터 거슬러 주기
n %= i # 거슬러주고 남은 돈 n에 저장
print(count) # 총 개수를 출력
위의 예시 코드처럼 가장 큰 화폐단위의 동전부터 거슬러주면 거슬러주는 동전의 개수를 가장 적게 만들 수 있습니다.