ํž™(Priority Queue)

Icarus<Wing>ยท2025๋…„ 5์›” 26์ผ

๐Ÿ“ข์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ž๋ฐ” ์–ธ์–ด๋กœ ํž™ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์ดˆ์ ์„ ๋งž์ถœ ๊ฒƒ์ด๋‹ˆ, ํž™ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํž™(ํŒŒ์ด์ฌ ๋ฒ„์ „)์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์šฐ์„ ์ˆœ์œ„ ํ ํด๋ž˜์Šค ์‚ฌ์šฉ๋ฒ•


์šฐ์„ ์ˆœ์œ„ ํ ๋งˆ์ง€๋ง‰ ๊ณต๊ฐ„์— 7์„ ๋„ฃ์œผ๋ฉด

7์ด ํฌํ•จ๋œ subtree์—์„œ ๋ถ€๋ชจ ๋…ธ๋“œ์™€ ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ , ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋ถ€๋ชจ ๋…ธ๋“œ๋ณด๋‹ค ๊ฐ’์ด ์ž‘์œผ๋ฏ€๋กœ(์šฐ์„ ์ˆœ์œ„๊ฐ€ ํผ) ์„œ๋กœ ์Šค์™‘์„ ํ•œ๋‹ค.

์ž๋ฐ”์˜ ์œ ํ‹ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ป์šฐ์„ ์ˆœ์œ„ ํ

package src;

import java.util.*;

public class Main {
    public static void main(String[] args) {
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        pq.offer(1);
        pq.offer(10);
        pq.offer(8);
        pq.offer(17);
        pq.offer(25);
        pq.offer(16);
        pq.offer(7);

        for (Integer i : pq) {
            System.out.println(i); // 1 10 7 17 25 16 8
        }
    }

}
  • ๊ธฐ๋ณธ์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์ˆซ์ž๊ฐ€ ๋ถ€์—ฌ๋˜๊ณ ,
    ๋งŒ์•ฝ ๋†’์€ ์ˆซ์ž๊ฐ€ ์šฐ์„ ์ˆœ์œ„(max heap)๊ฐ€ ๋˜๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์„ ์–ธ ์‹œ Collections.reverseOrder() ๋ฉ”์„œ๋“œ๋ฅผ new ์ธ์ž์— ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.
  • ์ปฌ๋ ‰์…˜ ํƒ€์ž…์˜ add() ๋ฉ”์„œ๋“œ๋„ ์žˆ์ง€๋งŒ, Queue ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๊ฐ€ PriorityQueue์ด๋ฏ€๋กœ ๋ฉ”์„œ๋“œ์˜ ์ผ๊ด€์  ์‚ฌ์šฉ์„ ์œ„ํ•ด offer(), poll(), peek()๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.
    • offer()๋Š” ํ๊ฐ€ ๊ฐ€๋“ ์ฐผ์„ ๋•Œ ์˜ˆ์™ธ๊ฐ€ ์•„๋‹ˆ๋ผ false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ(poll()๋„ ๋งˆ์ฐฌ๊ฐ€์ง€), ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์—†์ด๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
      • offer() ๋‚ด๋ถ€์—๋Š” siftUp()์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๊ณ , poll()๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‚ด๋ถ€์ ์œผ๋กœ siftDown()์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.

๐Ÿ“š์ฐธ๊ณ ์ž๋ฃŒ
๐Ÿ”—[Java] PriorityQueue(์šฐ์„ ์ˆœ์œ„ ํ) ํด๋ž˜์Šค ์‚ฌ์šฉ๋ฒ• & ์˜ˆ์ œ ์ด์ •๋ฆฌ: https://coding-factory.tistory.com/603

profile
๋ชจ๋“  ์ฝ”๋“œ์—๋Š” ์ด์œ ๊ฐ€ ์žˆ๊ธฐ์— ์›์ธ์„ ํŒŒ์•…ํ•  ๋•Œ๊นŒ์ง€ ์ง‘์š”ํ•˜๊ฒŒ ํƒ๊ตฌํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€