Open ericagong opened 1 year ago
성찰내용 성찰내용 성찰내용
예산
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) }
⭐ 성찰
❓ 문제 상황
예산
👨💻 문제 해결: 풀이 방식
✅ 1차 풀이: 키워드
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) }
} console.log(upperB) }