상세 컨텐츠

본문 제목

Baekjoon(Kotlin) - 11279. 최대 힙

Problems(Kotlin)/Baekjoon

by KDLiam 2023. 9. 18. 14:46

본문

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 를 이용하여 쉽게 최대/최소 힙을 구성할 수 있다는 것을 알고 이를 이용하여 코들르 작성했다.

관련글 더보기