Swift) 백준 2805번 나무 자르기 - S2

https://www.acmicpc.net/problem/2805

 

이분 탐색을 이용하여 자르는 부분의 범위를 구하는 문제. 

import Foundation

let nm = readLine()!.split(separator: " ").map{Int($0)!}
let treeArr = readLine()!.split(separator: " ").map{ Int($0)! }

var start = 1
var end = treeArr.max()!

while start <= end {
    let mid = (start+end)/2
    var count = 0
    for tree in treeArr {
        if tree > mid {
            count += tree-mid
        }
    }
    if count >= nm[1] {
        start = mid+1
    } else {
        end = mid-1
    }
}
print(end)