단순하지만 강력한 문제 해결 방법
현재 상황에서 지금 당장 좋은 것만 고르는 방법
‘가장 큰 순서대로’, ‘가장 작은 순서대로’와 같은 기준을 알게 모르게 제시해줌
정렬 알고리즘과 짝을 이뤄 출제됨
- 예제 3-1 거스름돈
화폐의 종류만큼 반복을 수행
화폐의 종류가 K개라고 할 때 이 코드의 시간 복잡도 O(K)그리디 알고리즘의 정당성
대부분의 문제에 최적의 해를 찾을 수 없을 가능성이 다분하다
해법이 정당한지 검토위 문제를 그리디 알고리즘으로 해결할 수 있는 이유는 가지고 있는 동전 중에서 큰 단위가 항상 작은 단위의 배수이므로 작은 단위의 동전들을 종합해 다른 해가 나올 수 없기 때문
대부분의 그리디 알고리즘 문제에서는 이처럼 문제 풀이를 위한 최소한의 아이디어를 떠올리고 이것이 정당한지 검토할 수 있어야 답을 도출할 수 있음n = 1260 count = 0 coin_types = [500, 100, 50, 10] for coin in coin_types: count += n // coin # 해당 화폐로 거슬러 줄 수 있는 동전의 개수 세기 n %= coin print(count)