코플릿/알고리즘

02_[Greedy] 편의점 알바

테오구 2021. 12. 7. 17:41
728x90

문제

편의점에서 아르바이트를 하고 있는 중에, 하필이면 피크 시간대에 손님에게 거스름돈으로 줄 동전이 부족하다는 것을 알게 되었습니다. 현재 가지고 있는 동전은 1원, 5원, 10원, 50원, 100원, 500원으로 오름차순으로 정렬되어 있고, 각 동전들은 서로 배수 관계에 있습니다. 동전 개수를 최소화하여 거스름돈 K를 만들어야 합니다. 이때, 필요한 동전 개수의 최솟값을 구하는 함수를 작성해 주세요.

 

더보기
function partTimeJob(k) {
  // TODO: 여기에 코드를 작성하세요.
  // k의 값이 500문으로 나눠 떨어지면 리턴 count
  // 그렇지 않으면 몫을 count에 더해주고
  // 나머지 값을 100으로 나눠 준다.
  // 2,3,4를 50, 10, 5, 1로 반복한다. 
//   let count = 0
//   const list = [500, 100, 50, 10, 1]
//   for(let value of list){
//     count += k / value
//     k %= value
//   }
// return count
  let coin=0;

 

  let k500 = parseInt(k/500//8
  let jandon = k%500 //472
  let k100 = parseInt(jandon/100// 4
  jandon = jandon%100 //72
  let k50 = parseInt(jandon/50//1
  jandon = jandon%50 //22
  let k10 = parseInt(jandon/10//2
  jandon = jandon%10 //2
  let k5 = parseInt(jandon/5//0
  jandon = jandon%5 //2
  let k1 = parseInt(jandon/1//2

 

  coin=coin+k500+k100+k50+k10+k5+k1
  return coin
}
더보기
function partTimeJob(k) {
  let result = 0;
  const wallet = [500, 100, 50, 10, 5, 1];
  for(let i = 0; i < wallet.length; i++) {
    if(k > 0) {
      const sum = Math.floor(k / wallet[i]);
      result += sum;
      k = k - (wallet[i] * sum);
    }
  }
  return result;
}
728x90

'코플릿 > 알고리즘' 카테고리의 다른 글

06_[순열] 새로운 치킨 소스 레시피  (0) 2021.12.07
05_rockPaperScissors  (0) 2021.12.07
03_[구현] 보드 게임  (0) 2021.12.07
01_[Greedy] 짐 나르기  (0) 2021.12.07
자바스크립로 구현하는 스택  (0) 2021.10.09