-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
⭐ 성찰
- 성찰내용
- 성찰내용
- 성찰내용
❓ 문제 상황
👨💻 문제 해결: 풀이 방식
✅ 1차 풀이: 키워드
- 풀이흐름
- 풀이 흐름
- 풀이흐름
const fs = require('fs')
const inputs = fs.readFileSync('/dev/stdin').toString().split('\n')
const N = Number(inputs.shift())
const budgets = inputs.shift().split(' ').map(Number)
const M = Number(inputs.shift())
const maxB = Math.max(...budgets)
const requiredB = budgets.reduce((acc, curr) => acc + curr, 0)
if(requiredB <= M) {
console.log(maxB)
}
else {
binarySearch(0, maxB)
}
function binarySearch(s, e) {
let upperB = 0
while(s <= e) {
const m = parseInt((s + e) / 2)
let assignedB = 0
for(budget of budgets) {
assignedB += Math.min(m, budget)
}
if(assignedB <= M) {
upperB = m
s = m + 1
}
else {
e = m - 1
}
}
console.log(upperB)
}