wellcome_공부일기

문제1) 거슬러 주어야 할 동전의 최소 개수 본문

알고리즘/그리디 알고리즘(Greedy Algorithm)

문제1) 거슬러 주어야 할 동전의 최소 개수

ma_heroine 2021. 1. 23. 20:28

문제1.

당신은 음식점의 계산을 도와주는 점원입니다.

카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정합니다.

손님에게 거슬러 주어야 할 돈이 N원일 때, 거슬러 주어야 할 동전의 최소 개수를 구하세요.

단, 거슬러 줘야 할 돈 N은 항상 10의 배수입니다. 예시, N = 1260

 


 

n = 1260
count = 0

# 큰 단위의 화폐부터 차례대로 확인하기
array = [500, 100, 50, 10]

for coin in array:
    count += (n // coin) # 해당 화폐로 거슬러 줄 수 있는 동전의 개수 세기
    n %= coin

print(count)

 

화폐의 종류가 K라고 할 때, 소스코드의 시간 복잡도는 O(K)입니다.

이 알고리즘의 시간 복잡도는 거슬러줘야 하는 금액과는 무관하며, 동전의 총 종류에만 영향을 받습니다.


지금 코드를 봐도, 헷갈리는 문제를 코드로 짧게 표현할 수 있다는게 놀랍다.

나는 처음에 고민을 많이 했다. 0ㅇ0

 

 

Comments