[kotlin] 우선순위 큐(Priority Queue)의 사용 방법
우선순위 큐는 데이터가 우선순위에 따라 처리되는 자료구조로, 가장 높은 우선순위를 가진 데이터가 가장 먼저 처리됩니다.
코틀린에서는 PriorityQueue
클래스를 사용하여 우선순위 큐를 구현할 수 있습니다.
우선순위 큐(Priority Queue) 생성
우선순위 큐를 사용하려면 먼저 PriorityQueue
를 생성해야 합니다. 아래는 PriorityQueue
를 사용하여 우선순위 큐를 생성하는 예제입니다.
import java.util.PriorityQueue
fun main() {
val priorityQueue = PriorityQueue<Int>()
// 우선순위 큐에 요소 추가
priorityQueue.add(3)
priorityQueue.add(1)
priorityQueue.add(2)
// 우선순위가 높은 순서대로 요소 출력
while (priorityQueue.isNotEmpty()) {
println(priorityQueue.poll())
}
}
위의 코드에서는 PriorityQueue
에 정수형 데이터를 추가하고, poll
함수를 사용하여 우선순위가 가장 높은 순서대로 요소를 출력합니다.
우선순위 큐(Priority Queue) 사용하기
우선순위 큐는 데이터를 추가할 때마다 내부적으로 우선순위를 정렬하므로, 데이터를 꺼낼 때 항상 우선순위가 가장 높은 데이터가 추출됩니다.
또한, PriorityQueue
는 기본적으로 자연 순서(natural order)를 따르지만, 우선순위 큐를 생성할 때 Comparator를 지정하여 새로운 우선순위 규칙을 정의할 수도 있습니다.
import java.util.PriorityQueue
fun main() {
val maxHeap = PriorityQueue<Int>(compareBy { -it }) // 최대 힙
val minHeap = PriorityQueue<Int>() // 최소 힙
maxHeap.addAll(listOf(3, 1, 2))
minHeap.addAll(listOf(3, 1, 2))
println("Max Heap:")
while (maxHeap.isNotEmpty()) {
println(maxHeap.poll())
}
println("Min Heap:")
while (minHeap.isNotEmpty()) {
println(minHeap.poll())
}
}
위의 코드에서는 Comparator를 사용하여 최대 힙과 최소 힙을 구현하고, 우선순위 큐에 데이터를 추가한 후에는 우선순위가 높은 순서대로 데이터를 출력합니다.
요약
코틀린의 PriorityQueue
를 사용하여 우선순위 큐를 구현하고, 우선순위가 높은 순서대로 데이터를 처리하는 방법을 알아보았습니다. 우선순위 큐는 다양한 알고리즘과 데이터 구조에서 유용하게 활용될 수 있습니다.
더 많은 정보는 Java PriorityQueue documentation를 참고하시기 바랍니다.
재미있는 코딩되세요! 🚀