반응형
백준 이분탐색/매개변수 탐색 관련 문제입니다.
이분 탐색 문제의 장점은 뭔가 논리적으로 생각하는 대로 구현이 가능하다는 점인 것 같습니다.
백준 문제 풀면서 느끼는 거지만 문제를 보고 바로 코드에 적는 것보다는 어디에 쓰거나 그려가면서 어떤 순서로 코드를 작성할지 생각한 뒤 푸는 게 더 효율적인 것 같습니다.
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 |