[kotlin] 힙(Heap) 자료 구조의 특징과 사용 예시
힙(heap)은 완전 이진 트리(complete binary tree) 형태의 자료 구조로, 최댓값 또는 최솟값을 빠르게 찾기 위해 사용됩니다. 힙은 주로 우선순위 큐와 함께 사용되며, 데이터의 삽입, 삭제, 최댓값 또는 최솟값 검색에 뛰어난 성능을 보입니다.
힙의 특징
- 완전 이진 트리 구조: 모든 노드에 관해서 왼쪽 자식부터 채워지는 형태를 갖고 있습니다.
- 최댓값 또는 최솟값 빠르게 접근: 힙의 루트 노드는 최댓값 또는 최솟값을 가지고 있어, 상수 시간 안에 접근할 수 있습니다.
사용 예시
import java.util.*
fun main() {
// 최소힙 생성
val minHeap = PriorityQueue<Int>()
// 데이터 삽입
minHeap.add(5)
minHeap.add(3)
minHeap.add(8)
minHeap.add(1)
// 최솟값 삭제
minHeap.poll()
// 최솟값 확인
val min = minHeap.peek()
println("최솟값: $min") // 출력: 최솟값: 3
}
위 예시에서는 PriorityQueue
를 사용하여 최소힙을 구현하였습니다. add
메서드를 통해 데이터를 삽입하고, poll
메서드로 최솟값을 삭제한 후, peek
메서드를 사용하여 최솟값을 확인하였습니다.
힙은 이외에도 다양한 용도로 활용될 수 있으며, 알고리즘 및 데이터 구조 학습에 있어 중요한 개념 중 하나입니다.
더 자세한 정보는 GeeksforGeeks에서 참고할 수 있습니다.