프로그래머스 Lv3 입국심사 Kotlin

문제

풀이방법

  • 이전에 풀다가 만 문제였는데 아무리 생각해도 이게 이분탐색이라는 생각이 떠오르지가 않아 힌트를 보았다.

  • 시간을 기준으로 해당 시간내에 모두 검사가 가능한지 판단하고 시간에 대해 이분탐색을 적용하는 방식이었다.

  • 코테에 나왔으면 이분탐색 절대 생각 못했다

코드

class Solution {
    fun solution(n: Int, times: IntArray): Long {
        var min = 0L
        var max = times.maxOrNull()!!.toLong()*n.toLong()
        while(min<=max){
            val mid = (min + max)/2
            var sum = 0L
            times.forEach{
                sum += mid/it
            }

            if(sum<n){
                min = mid+1
            }
            else{
                max = mid -1
            }
        }
        return max+1
    }
}

좋은 웹페이지 즐겨찾기