[구름톤 챌린지] 과일 구매 (JS)

hhkim·2023년 9월 1일
0

Algorithm - JavaScript

목록 보기
120/188
post-thumbnail

풀이 과정

  1. 각 과일의 포만감을 조각으로 자른 포만감으로 다시 저장
  2. 1번 배열을 포만감 내림차순으로 정렬
  3. 과일 배열에 대해 반복
  4. 조각 수와 가진 돈 중 작은 수만큼 가진 돈 차감, 조각 수 * 포만감만큼 결과 증가
    이때 가진 돈이 다 떨어지면 반복문 빠져나오기

코드

const readline = require('readline');
let rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});
let input = [];
let N, K;
rl.on('line', (line) => {
  input.push(line.trim());
  [N, K] = input[0].split(' ').map(Number);
  if (input.length === N + 1) {
    rl.close();
  }
});

rl.on('close', () => {
  let fruits = [];
  for (let i = 1; i <= N; ++i) {
    fruits.push(input[i].split(' ').map(Number));
  }
  fruits = fruits.map(([p, c]) => [p, c / p]);
  fruits.sort((a, b) => b[1] - a[1]);

  let result = 0;
  for (const [p, c] of fruits) {
    const tmp = Math.min(K, p);
    K -= tmp;
    result += tmp * c;
    if (K === 0) break;
  }

  console.log(result);
  process.exit();
});

🦾

쉬어가는 문제 좋아요
과일은 조각으로 자를 수 있고, 조각의 가격이 1이기 때문에 돈을 남김없이 쓰면 된다.
포만감이 큰 게 우선이니까 포만감이 큰 순서대로 채워나가면 된다.

0개의 댓글