그리디 알고리즘은 말그대로 "탐욕법" 즉, 현재 상황에서 지금 당장 좋은 것만을 고르는 방법을 의미한다.
그리디의 대표적인 문제인 거스름돈 문제를 살펴보자.
5585번: 거스름돈
타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사
www.acmicpc.net
이 문제는 그리디 알고리즘을 이용해 풀 수 있는 가장 대표적인 문제로, 가장 큰 화페 단위부터 돈을 거슬러 주는 방식으로 해결할 수 있다.
coins = [500, 100, 50 , 10, 5 , 1]
n = int(input())
money = 1000-n
cnt = 0
for coin in coins:
cnt += money // coin
money %= coin
print(cnt)
위 문제가 그리디 알고리즘으로 풀리는 이유는, 가지고 있는 동전 중에서 큰 단위가 항상 작은 단위의 배수이므로 작은 단위의 동전들을 종합해 다른 해가 나올 수 없기 때문이다.
728x90
'📓STUDY > 알고리즘' 카테고리의 다른 글
이진 탐색 | Binary Search (1) | 2023.06.06 |
---|---|
Deque(데크)란 무엇일까 | 파이썬 자료구조 큐(Queue) (0) | 2023.04.17 |
[ Python | 파이썬 ] 정렬 알고리즘 정리 및 코드 (0) | 2023.04.11 |
[python] Stack과 Queue (0) | 2023.04.05 |