ericagong / algorithm_solving

2 stars 0 forks source link

[이진탐색] 예산 #95

Open ericagong opened 1 year ago

ericagong commented 1 year ago

⭐ 성찰

  1. 성찰내용
  2. 성찰내용
  3. 성찰내용

❓ 문제 상황

예산

👨‍💻 문제 해결: 풀이 방식

✅ 1차 풀이: 키워드

  1. 풀이흐름
  2. 풀이 흐름
  3. 풀이흐름
    
    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) }