반응형
문제
편의점에서 아르바이트를 하고 있는 중에, 하필이면 피크 시간대에 손님에게 거스름돈으로 줄 동전이 부족하다는 것을 알게 되었습니다. 현재 가지고 있는 동전은 1원, 5원, 10원, 50원, 100원, 500원으로 오름차순으로 정렬되어 있고, 각 동전들은 서로 배수 관계에 있습니다. 동전 개수를 최소화하여 거스름돈 K를 만들어야 합니다. 이때, 필요한 동전 개수의 최솟값을 구하는 함수를 작성해 주세요.
입력
인자: k
- number 타입의 k
- 1 <= k <= 100,000,000
출력
- number 타입의 거스름돈 K원을 만드는데 필요한 동전 개수의 최솟값을 반환해야 합니다.
입출력 예시
// 4000원을 받았을 때 500원짜리 동전 8개를 반환합니다.
const output1 = test1(4000);
console.log(output1); // --> 8
// 4972원을 받았을 때 500원짜리 동전 9개, 100원짜리 동전 4개, 50원짜리 동전 1개, 10원짜리 동전 2개, 1원짜리 동전 2개, 총 18개를 반환합니다.
const output2 = test1(4972);
console.log(output2); // --> 18
코드
function partTimeJob(k) {
// TODO: 여기에 코드를 작성하세요.
//문제에 주어진 동전들을 큰 순으로 나열했다.
let coins = [500,100,50,10,5,1]
let result = 0//동전 개수
for(let coin of coins){
result += parseInt(k/coin)//소수점 자르기
//만약 4970원이었다면 500원9개로 4500원을 채운 뒤, 470원을 다시 계산한다.
k = k % coin
}return result
}
반응형
'개발 > 알고리즘' 카테고리의 다른 글
내가 보려고 만든 순열 조합 중복순열 (0) | 2021.10.07 |
---|---|
알고리즘 16 [구현] 보드 게임 (0) | 2021.10.06 |
알고리즘 14 : [Greedy] 짐 나르기 (0) | 2021.10.06 |
알고리즘 13 : spiralTraversal, 배열 나선형으로 순회 (0) | 2021.10.05 |
알고리즘 12 : 배열 회전 (0) | 2021.10.02 |