알고리즘/코테대비 100문제

문제 30 - 거스름돈 주기 (그리디)

hoj0806 2025. 2. 22. 19:23

문제 설명

당신은 상점에서 계산을 마치고 거스름돈을 돌려받아야 합니다. 다만 거스름돈을 최소한의 화폐 수로 받고 싶어졌습니다. 거스름돈 amount가 주어질 때, 화폐 단위 [1, 10, 50, 100]을 최소한으로 사용한 화폐 배열을 반환하는 solution() 함수를 구현하세요.


 

제약 조건

  • 반환하는 값의 화폐 단위는 내림차순이어야 합니다.
  • amount는 자연수입니다.
  • 화폐 단위는 [1, 10, 50, 100]이며, 화폐 개수는 무한합니다.

 

입출력 예시

123 [100, 10, 10, 1, 1, 1]
350 [100, 100, 100, 50]

 

 

 

내 정답 코드

function solution(amount) {
    let coins = [100, 50, 10 , 1]
    let answer = []

    
    for(const coin of coins) {
        
        for(let i = 1; i <= Math.floor(amount / coin); i++) {
            answer.push(coin)
        }
        
        amount %= coin
    }

   return answer
}