그리디 : 거스름돈 [ 이것이 코딩테스트다 ] [ Python ]

2023. 4. 18. 23:40알고리즘/이것이 코딩테스트다

문제


당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원, 100원, 
50원, 10원짜리 동전이 무한히 존재한다고 가정한다.

손님에게 거슬러 줘야 할 돈이 N 원일 때 거슬러 줘야 할 동전의 최소 개수를 구하라.
단, 거슬러 줘야 할 돈 N 은 항상 10의 배수이다.

tip) 가장 큰 화폐 단위부터 돈을 거슬러준다.

 


나의 코드

n = 1260

money = [ 500, 100, 50, 10]

result = 0

for i in money:
    result = result + (n // i) # 500원 먼저 최대로 넣음 첫 루프때 n 은 1260 i 는 500 나눈값인 2를 result 에 넣는다.
    n = n % i 
    # 왼쪽 변수에 오른쪽 값을 나눈후 그 나머지를 할당한다. 첫 루프때 n 은 1260 i 는 500 이므로 나머지하고 남은 값을
    # 260 을 넣어준다.
print(result);

저자 코드

n = 1260
count = 0

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

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

print(count)

회고

 

본문제가아니라 설명인 문제이지만 비슷하게 풀었다는 것이 좋았다. 설명이 좋았어서 그랬을지도..

%= 같은 산술연산자를 활용할 생각을 못한것이 아쉽다. 이 산술연산자는 떠오르지도 않았음

자주 활용해 봐야겠숨