백준 2512번 예산 Node.js 풀이

버건디·2024년 1월 25일
0

백준

목록 보기
71/75
post-thumbnail

문제 링크


- 풀이

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

const N = Number(input.shift());

const arr = input[0]
  .split(" ")
  .map(Number)
  .sort((a, b) => a - b);

const M = Number(input[1]);

let answer = 0;

let sum = arr.reduce((a, b) => a + b, 0);

let start = 1;

let end = arr[arr.length - 1];

while (start <= end) {
  let mid = Math.floor((start + end) / 2);

  let sum = 0;

  arr.forEach((num) => {
    if (num > mid) {
      sum += mid;
    } else {
      sum += num;
    }
  });

  if (M >= sum) {
    answer = mid;
    start = mid + 1;
  } else {
    end = mid - 1;
  }
}

console.log(answer);

여기서 초기에 start를 1이 아니라, arr[0]으로 했는데 틀리다고 나왔다.

어차피 예산은 arr 배열 내의 범위 안에 들어가있는 수에서 정해지는게 아닌건가? 싶었는데,

그게 아니었다. 저 배열안에 있는 값들은 상관이 없고, 저 한도가 중요한것이기 때문에 1로 설정해주는 것이 맞다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글