URL : https://www.acmicpc.net/problem/11279
11279번: 최대 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
[ RESULT ]
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.PriorityQueue
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
val N:Int = br.readLine().toInt()
var data: Int
val maxHeap = PriorityQueue<Int>(reverseOrder())
repeat(N) {
data = br.readLine().toInt()
if(data == 0) {
if(maxHeap.size == 0) bw.write("0\n").toString()
else {
val max = maxHeap.poll()
bw.write("$max\n")
}
}
else maxHeap.add(data)
}
br.close()
bw.flush()
bw.close()
}
최대 힙을 어떻게 구현할지 구상하던 중, Kotlin에 PriorityQueue 를 이용하여 쉽게 최대/최소 힙을 구성할 수 있다는 것을 알고 이를 이용하여 코들르 작성했다.
Baekjoon(Kotlin) - 1978. 소수 찾기 (0) | 2023.09.20 |
---|---|
Baekjoon(Kotlin) - 9935. 문자열 폭발 (0) | 2023.09.19 |
Baekjoon(Kotlin) - 1300. K번째 수 (0) | 2023.09.17 |
Baekjoon(Kotlin) - 1920. 수 찾기 (0) | 2023.09.16 |
Baekjoon(Kotlin) - 1931. 회의실 배정 (0) | 2023.09.15 |