[Algorithm] 그리디 알고리즘

서요이·2022년 9월 25일
0

Algorithm

목록 보기
1/4
post-thumbnail

당장 좋은 것만 선택하는 그리디

단순하지만 강력한 문제 해결 방법
현재 상황에서 지금 당장 좋은 것만 고르는 방법
‘가장 큰 순서대로’, ‘가장 작은 순서대로’와 같은 기준을 알게 모르게 제시해줌
정렬 알고리즘과 짝을 이뤄 출제됨

  • 예제 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)

0개의 댓글