Algorithm(알고리즘)/Greedy Algorithm
1) 최소 동전으로 거슬러주기(greedy algorithm)
반응형
Greedy Algorithm
가장 좋아보이는 것을 답으로 선택한다.
따라서 정확한 답이 아닐 수 있다.
두 가지 조건을 충족하면 최적의 답을 도출할 수 있다.
만약 문제가 최적 부분 구조를 가졌고, 탐욕적 선택 속성을 가졌다면
Greedy Algorithm을 활용해도 최적의 답을 얻어낼 수 있다.
def min_coin_count(value, coin_list):
# 누적 동전 개수
count = 0
# coin_list의 값들을 큰 순서대로 본다
for coin in sorted(coin_list, reverse=True):
# 현재 동전으로 몇 개 거슬러 줄 수 있는지 확인한다
count += (value // coin)
# 잔액을 계산한다
value %= coin
return count
# 테스트
default_coin_list = [100, 500, 10, 50]
print(min_coin_count(1440, default_coin_list))
print(min_coin_count(1700, default_coin_list))
print(min_coin_count(23520, default_coin_list))
print(min_coin_count(32590, default_coin_list))
#결과 :
10
5
49
70
반응형
'Algorithm(알고리즘) > Greedy Algorithm' 카테고리의 다른 글
4) 수업 겹치지 않게 수강하기 (0) | 2021.05.16 |
---|---|
3) 최소 지각 벌금 문제 (0) | 2021.05.16 |
2) 세 사람의 카드게임에서 한장씩 뽑아 가장 큰 곱 출력 함수 (0) | 2021.05.16 |
댓글