[BOJ 실버 2] 풍선 공장 15810 Kotlin

문제

풀이

  • 보자마자 프로그래머스에서 풀었던 이분탐색문제가 생각나서 이분탐색으로 바로 풀었다.
  • 최소시간 0, 최대시간 -> 스태프중 가장 오래걸리는 시간 * 풍선개수 로 잡고 이분탐색 돌리면 쉽게 풀 수 있다.

코드

fun main() = with(System.`in`.bufferedReader()) {
    val (n,m) = readLine().split(" ").map{it.toInt()}
    val list = readLine().split(" ").map{it.toLong()}
    var max : Long = list.maxOrNull()!!*m
    var min : Long= 0
    while(min<=max){
        val mid = (max+min)/2
        var cnt = 0L
        for(t in list){
            cnt += mid/t
        }
        if(cnt<m){
            min = mid+1
        }
        else{
            max = mid-1
        }
    }
    println(min)
}

좋은 웹페이지 즐겨찾기