카테고리 없음

그리디 알고리즘

낑깡H 2022. 12. 13. 17:54

 매 순간 최적의 경우만을 고려하는 방법. 

현실 속 당장의 문제를 해결해주는 후보에게 표를 던지거나 당장 눈 앞의 마쉬멜로를 먹는 행위

ex)

가능한 짧은 경로를 고를 때, 전체 경로 중 최적의 값을 고려하는 대신에 매 선택지 중 가장 짧은 도로를 고른 경우의 합. 
각 경로의 선택이 1-1-100 vs 최적의 경로 10 -10 -30 

최적해들의 집합이 곧 전체의 해답이 되는 경우 사용 가능! 


이경우는 최적해가 아님
: 각 선택이 다음 선택에 영향이 없어야 함

사용 사례 :  거스름돈 문제, 다익스트라, 허프만, 제약 조건이 많은 경우 등 

 

 

거스름돈 문제 예시 코드

n = 1260
count = 0


coin_types = [500, 100, 50, 10]
for coin in coin_types:
count += n // coin # 해당 화폐로 거슬러 줄 수 있는 동전의 개수 세기 n %= coin
print(count)

내 코드 

n = int(input())
cnt = 0 

while n >= 500:
    n -= 500
    cnt += 1
 
while n >= 100:
    n -= 100
    cnt += 1

print(cnt)