Coding Test/코테 이론

그리디(탐욕법) 알고리즘 - 거스름돈 문제

jjikky 2022. 10. 19. 15:16
반응형

그리디 알고리즘

: 현재 상황에서 지금 당장 좋은 것만 보르는 방법, 닫순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토하는 과정이 꼭 필요!

 

 

거스름돈 문제

카운터에는 거스름돈으로 사용할 500원, 100원, 50원 10원짜리 동전이 무한히 존재한다고 가정합니다.
손님에게 거슬러 주어야 할 돈이 N원일 때 거슬러 주어야 할 동전의 최소 개수를 구하세요. 단, N은 10의 배수

 

해결 방법

- 최적의 해를 빠르게 구하기 위해 가장 큰 화폐 단위부터 돈을 거슬러 준다.

    >> N원을 거슬러 줘야 할 때, 가장 먼저 500원으로 거슬러 줄 수 있을만큼 거슬러주고 이후 단위도 똑같이 반복

 

- 최적의 해가 보장되는 이유 : 큰 단위가 항상 작은 단위의 배수이기 때문! 

    >> 800원을 거슬러 주어야 하는데 단위가 500,400,100 이라면 400원 두개 주는게 최적의 해가 된다.

 

답안 예시

n = 1260
count = 0

array = [500, 100, 50, 10]

for coin in array:
	count += n//coin
    n%=coin

print(coin)

 

화폐의 개수가 K라고 했을때, 시간 복잡도는 O(K)

 

반응형