알고리즘/코테대비 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
}