Post

PriorityQueue

✅ 우선순위 큐 (PriorityQueue)

PriorityQueue힙(Heap) 기반의 자료구조로, 우선순위가 높은 요소를 우선적으로 처리하는 큐입니다.
Java에서는 기본적으로 Min Heap 방식으로 구현됩니다.
poll() 시 가장 우선순위가 높은 값이 꺼내지며, 숫자가 작을수록 우선순위가 높습니다.


🔍 개요

  • 내부구조: 힙(Heap) 기반
  • 기본 방식: Min Heap (가장 작은 값 우선)
  • 우선순위 처리: poll() 시 가장 우선순위가 높은 값이 나옴

⏳ 시간 복잡도 요약

연산시간 복잡도설명
add(e) / offer(e)O(log N)힙에 원소 삽입
poll()O(log N)가장 우선순위 높은 원소 제거
peek()O(1)가장 우선순위 높은 원소 조회
contains(e)O(N)특정 원소 포함 여부 확인
remove(e)O(N)특정 원소 제거

📍 언제 써야 하는지 (O(log N))

  • 항상 가장 작은/큰 값을 빠르게 꺼내야 할 때

📍 언제 쓰지 말아야 하는지 (O(N))

  • 전체 순회를 자주 하거나, 중간 삽입/삭제가 빈번할 때
  • 정렬된 순서로 계속 유지되어야 하는 경우 (이 경우 TreeSet/TreeMap이 더 적합)

🕒 예제 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.PriorityQueue;

public class PriorityQueueExample {
    public static void main(String[] args) {
        // 우선순위 큐 생성 (기본적으로 Min Heap)
        PriorityQueue<Integer> pq = new PriorityQueue<>();

        // 원소 삽입
        pq.offer(5);
        pq.offer(1);
        pq.offer(10);

        // 가장 우선순위 높은 값 조회 (1이 가장 우선순위)
        System.out.println(pq.peek());  // 1

        // 가장 우선순위 높은 값 제거 (1이 제거됨)
        System.out.println(pq.poll());  // 1

        // 큐 상태 출력
        System.out.println(pq);         // [5, 10]
    }
}
This post is licensed under CC BY 4.0 by the author.
3D GIF

Trending Tags

도움이 필요하면
나를 눌러 구리🐻
챗봇
너굴
bot
어서와 구리 ʕ ·ᴥ·ʔ
무엇이 필요하셔 구리?

Trending Tags

도움이 필요하면
나를 눌러 구리🐻
챗봇
너굴
bot
어서와 구리 ʕ ·ᴥ·ʔ
무엇이 필요하셔 구리?