κ°μμ€ λ°°μ (11000λ²)
Gold 5
#μλ£ κ΅¬μ‘° #그리λ μκ³ λ¦¬μ¦ #μ λ ¬ #μ°μ μμ ν
https://www.acmicpc.net/problem/11000
λ¬Έμ λ΄μ©
λ¬Έμ μ κ·Ό
κ°μμ€μ μ΅λν μ κ² μ¬μ©ν΄ nκ°μ μμ μ λͺ¨λ μ§νν΄μΌ νλ€.
κ°μμ μμ μκ°κ³Ό μ’ λ£ μκ°μ μ°Έκ³ ν΄ λͺ¨λ κ°μλ₯Ό μ§ννλ λ° νμν μ΅μ κ°μμ€μ κ°μλ₯Ό ꡬν΄μΌ νλ€.
κ°κ°μ κ°μλ€ μ€ κ°μ μμ μκ°μ΄ κ°μ μ’ λ£ μκ°λ³΄λ€ μκ±°λ κ°μ λλ ν κ°μμ€μμ κ°μ΄ λ€μ μ μλ€.
μλ₯Ό λ€μ΄ μμ μκ°μ΄ 1μ΄κ³ μ’ λ£ μκ°μ΄ 3μΈ κ°μμ μμ μκ°μ΄ 3μ΄κ³ μ’ λ£ μκ°μ΄ 5μΈ κ°μλ ν κ°μμ€μμ κ°μ΄ λ€μ μ μλ€.
κ°μλ€ μ€ μ μΌ λ¨Όμ μμνλ κ°μλΆν° μμν΄ ν κ°μμ€μμ μΈ μ μλ κ°μλ€μ λͺ¨λ μ κ±°νλ©΄μ λ¬Έμ λ₯Ό ν΄κ²°νλ©΄ λλ€.
μλ₯Ό λ€μ΄ λ€μκ³Ό κ°μ μ λ ₯ μμ κ° μμ λ
3
1 3
2 4
3 5
1μ μμνκ³ 3μ λλλ κ°μλΆν° μμν΄ ν κ°μμ€μμ μΈ μ μλ κ°μμΈ 3μ μμνκ³ 5μ λλλ κ°μλ₯Ό μ κ±°νλ©΄ λλ€.
κ·Έλ¦¬κ³ μ κ³Όμ μ λ°λ³΅νλ©΄ νμν μ΅μ κ°μ μλ₯Ό μ μ μκ² λλ€.
κ°μμ κ°μκ° λ§μ μΌμ΄μ€μμλ μΌμΌμ΄ μ°Ύλ λ°©λ²μ μ¬μ©νλ©΄ μκ° μ΄κ³Όκ° λ°μν μ μλ€.
κ°μκ° μ΅λ 20λ§ κ°κ° μ¬ μ μκΈ° λλ¬Έμ μκ° μ΄κ³Όκ° λ°μν κ²μ΄λ€.
κ·Έλ¬λ―λ‘ μ νλ κ°μμμ μμν μ μλ κ°μλ₯Ό λΉ λ₯΄κ² μ°ΎμμΌ νλλ° λλ μ΄λΆ νμμ μ΄μ©ν΄μ κ°μλ₯Ό μ°Ύμ μ£Όμλ€.
λ¬Έμ ν΄κ²° μ½λ
import java.io.BufferedReader
import java.io.InputStreamReader
fun main() {
val bf = BufferedReader(InputStreamReader(System.`in`))
val n = bf.readLine().toInt()
val lecture = mutableListOf<Pair<Int, Int>>()
for (i in 0 until n) {
val (s, t) = bf.readLine().split(" ").map { it.toInt() }
lecture.add(Pair(s, t))
}
lecture.sortBy { it.second }
lecture.sortBy { it.first }
var classCnt = 1
var endTime = lecture.first().second
lecture.removeFirst()
while (lecture.isNotEmpty()) {
val bsResIndex = binarySearch(lecture, endTime, 0)
if (bsResIndex in lecture.indices) {
endTime = lecture[bsResIndex].second
lecture.removeAt(bsResIndex)
} else {
classCnt++
endTime = lecture[0].second
lecture.removeFirst()
}
}
println(classCnt)
}
private fun binarySearch(list: List<Pair<Int, Int>>, endTime: Int, si: Int, ei: Int = list.lastIndex): Int {
val mi = (si + ei) / 2
if (si > ei) return si
return if (list[mi].first >= endTime) binarySearch(list, endTime, si, mi - 1)
else binarySearch(list, endTime, mi + 1, ei)
}
λ¬Έμ νμ΄
μ°μ μ΄λΆ νμμ μ¬μ©νκΈ° μν΄ κ°μλ₯Ό μ λ ¬ν΄ μ£Όμλ€.
κ·Έλ¦¬κ³ μ λ΅μ 무쑰건 1 μ΄μμ΄κΈ° λλ¬Έμ classCntλ₯Ό 1λ‘ μ νκ³ , μ²μ μ νλ κ°μμ μ’ λ£ μκ°μ μ μ₯ν λ³μλ₯Ό λ§λ€μ΄ μ€λ€.
첫 λ²μ§Έ indexλ₯Ό μ§μ°κ³ λ°λ³΅μ μ§ννλ€.
μ΄λΆ νμμ ν΅ν΄ endTimeκ³Ό μμ μκ°μ΄ ν¬κ±°λ κ°μ κ°μλ€ μ€ κ°μ₯ μμ κ°μμ indexλ₯Ό λΆλ¬μ 쀬λ€.
μ΄λΆ νμμ κ²°κ³Όκ° lectureμ λ²μλ₯Ό λ²μ΄λκ² λλ©΄ λ μ΄μ κ°μ κ°μμ€μ μΈ μ μλ κ°μκ° μλ€λ λ»μ΄κΈ° λλ¬Έμ νμ¬ λ¨μ κ°μλ€ μ€ μ²« λ²μ§Έ κ°μμ μ’ λ£ μκ°μ endTimeμ μ¬μ μ©νκ³ classCntλ₯Ό μ¦κ°μν¨λ€.
첫 λ²μ§Έ κ°μ μ§μ°λ κ²μ μμ§ λ§μ.
μ΄λΆ νμμ ν΅ν΄ μ μμ μΌλ‘ indexλ₯Ό λΆλ¬μ¨ κ²½μ°μλ μ νλ indexμ κ°μ μ’ λ£ μκ°μΌλ‘ endTimeμ μ μν΄ μ£Όκ³ ν΄λΉ indexμ κ°μ μ κ±°νλ€.
λ¬Έμ ν΄κ²° κ³Όμ
μ΄λΆ νμμ΄ μκ³ λ¦¬μ¦ ν€μλμλ μμμΌλ, μ΄λΆ νμμ μ¬μ©ν΄μ ν΄κ²°νλ€.
μμ§ μ°μ μμ νλ₯Ό μ νν λͺ¨λ₯΄κΈ° λλ¬Έμ μ΄λ»κ² ꡬνν κΉ μκ°νλ€κ° μ΄λΆ νμμ λ μ¬λ¦¬κ² λμλ€.
μμ΄λμ΄ μ체λ λ μ¬λ¦¬κΈ°λ μ΄λ ΅μ§ μμκ³ , ꡬν μ체λ μ΄λ ΅μ§λ μμλ€.
μ²΄κ° λμ΄λ: Silver 1 ~ Gold 5
'π― | λ°±μ€ > π | Gold' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Kotlin, G5] λ°±μ€ 1711λ² μ§κ°μΌκ°ν (0) | 2024.10.01 |
---|---|
[Kotlin, G4] λ°±μ€ 9935λ² λ¬Έμμ΄ νλ° (0) | 2024.10.01 |
[Kotlin, G5] λ°±μ€ 10827λ² a^b (0) | 2024.09.19 |
[Kotlin, G1] λ°±μ€ 1300λ² Kλ²μ§Έ μ (0) | 2024.09.09 |
[Kotlin, G5] λ°±μ€ 16928λ² λ±κ³Ό μ¬λ€λ¦¬ κ²μ (0) | 2024.08.12 |