
Priority Queue 인스턴스를 생성할 때, 초기화시 compareBy 로 절댓값과 값을 지정해주면 되는 문제이다.
Heap 을 직접 구현하는 경우 이를 응용하면 되고 이전 게시글들에 올렸으니 따로 올리지 않으려고 한다.
import java.util.PriorityQueue
fun `11286-절댓값 힙`(){
val br = System.`in`.bufferedReader()
val bw = System.out.bufferedWriter()
val n = br.readLine().toInt()
val stringBuilder = StringBuilder()
/*
절댓값 우선 적용, 절댓값이 같은 경우 값으로 정렬
*/
val priorityQueue = PriorityQueue<Int>(compareBy ({ kotlin.math.abs(it) }, { it }))
repeat(n){
val num = br.readLine().toInt()
if(num == 0){
stringBuilder.appendLine(priorityQueue.poll() ?: 0)
} else {
priorityQueue.add(num)
}
}
bw.write(stringBuilder.trim().toString())
bw.flush()
bw.close()
br.close()
}