[JS/백준]{그리디}(11508) 2+1 세일

202209월 30

백준 문제 링크

문제 설명

매우 화나는 문제이다. 첫번쨰로 기존에 사용하던 fs를 사용했더니 런타임에러가 나타나서 readline을

사용했다. 그리고나서는 문제가 틀렸길래 왜이러나 했더니 문제 예시로 나왔던 10, 9, 4, 2, 6, 4, 3

부분의 지불 금액이 잘못되어있던것이었다. (32가아니라 29가 나와야함) 🤬🤬

문제 해결 아이디어는 내림차순으로 정렬후 3번째 값들만 지우면 큰수들을 지울수가있다.

예시 : (10,9,8) (7,6,5) (4,3)


코드

const solution = (N, milkInfo) => {
  milkInfo.sort((a, b) => b - a);

  let freeMilk = 0;

  for (let i = 2; i < N; i += 3) {
    freeMilk += milkInfo[i];
  }
  milkInfo = milkInfo.reduce((pre, cur) => pre + cur);
  console.log(milkInfo - freeMilk);
};

const readline = require("readline");

(async () => {
  let rl = readline.createInterface({ input: process.stdin });
  let N = null;
  let count = 0;
  const milkInfo = [];

  for await (const line of rl) {
    if (!N) {
      N = +line;
    } else {
      milkInfo.push(+line);
      count += 1;
    }
    if (N === count) {
      rl.close();
    }
  }
  solution(N, milkInfo);
  process.exit();
})();