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로 설정해주는 것이 맞다.