본문 바로가기

Kotlin/Baekjoon

백준 2512 코틀린

반응형

 

백준 이분탐색/매개변수 탐색 관련 문제입니다.

이분 탐색 문제의 장점은 뭔가 논리적으로 생각하는 대로 구현이 가능하다는 점인 것 같습니다.

백준 문제 풀면서 느끼는 거지만 문제를 보고 바로 코드에 적는 것보다는 어디에 쓰거나 그려가면서 어떤 순서로 코드를 작성할지 생각한 뒤 푸는 게 더 효율적인 것 같습니다.

import java.util.*
import java.io.*
import kotlin.text.*
fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))

    val N = br.readLine().toInt()

    val arr = Array<Int>(N,{0})

    var left = 0
    var right = -1

    val st = StringTokenizer(br.readLine())
    for (i:Int in 0 until N) {
        arr[i] = st.nextToken().toInt()
        right = Math.max(right,arr[i])
    }

    val limit = br.readLine().toInt()

    while (left <= right) {
        val mid = (left+right) / 2
        var budget = 0
        for (i:Int in 0 until N) {
            if (arr[i] > mid) {
                budget += mid
            } else {
                budget += arr[i]
            }
        }
        if (budget <= limit) {
            left = mid + 1
        } else {
            right = mid - 1
        }
    }
    println(right)
}

반응형

'Kotlin > Baekjoon' 카테고리의 다른 글

백준 15904 코틀린  (0) 2022.12.28
백준 1978 코틀린  (0) 2022.11.23
백준 1744 코틀린  (0) 2022.11.15
백준 2739 코틀린  (0) 2022.11.10
백준 1330 코틀린  (0) 2022.11.10