PriorityQueue

greenTeaยท2023๋…„ 4์›” 10์ผ
0

๐Ÿค”์ฝ”ํ…Œ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๋ณด๋ฉด ์šฐ์„ ์ˆœ์œ„ํ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ์–ด ๊ธ€์„ ์“ฐ๊ฒŒ ๋˜์—ˆ๋‹ค.

PriorityQueue๋Š” ์šฐ์„ ์ˆœ์œ„ํ๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ ๋‚ด๋ถ€๋Š” ํž™์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด ํž™์˜ ์„ฑ์งˆ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
PriorityQueue๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค.

์ƒ์„ฑ

PriorityQueue<Integer> queue = new PriorityQueue<>();

offer

๐Ÿ˜‘ํ์— ๊ฐ’์„ ๋„ฃ์œผ๋ ค๋ฉด addํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

 PriorityQueue<Integer> queue = new PriorityQueue<>();
 queue.offer(1);
 queue.offer(2);
 queue.offer(3);

poll

๐Ÿ˜Žํ์—์„œ ๊ฐ’์„ ๋นผ์˜ค๋ ค๋ฉด pollํ•จ์ˆ˜๋ฅผ ์ด์š”ํ•˜๋ฉด ๋œ๋‹ค. ์ด ๋•Œ ์ •๋ ฌ์— ๋”ฐ๋ผ ๊ฐ€์žฅ ํฐ ๊ฐ’ ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ์•„๋ฌด ๊ฐ’๋„ ์ฃผ์ง€ ์•Ÿ๋Š” ๋‹ค๋ฉด ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ๋‚˜์˜จ๋‹ค.

PriorityQueue<Integer> queue = new PriorityQueue<>();
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        Integer poll = queue.poll();
        System.out.println("poll = " + poll);
        // 1

๐Ÿ˜Š๋งŒ์•ฝ ๊ฐ’์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ํ™•์ธ๋งŒ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด peek์„ ์ด์šฉํ•˜๋ฉด๋œ๋‹ค.

PriorityQueue<Integer> queue = new PriorityQueue<>();
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        
        System.out.println("poll = " + queue.peek());
        // 1

Comparator๊ตฌํ˜„

๐Ÿ‘ปํ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด ๋‚ด๊ฐ€ ์ง์ ‘ ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ์–ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿด๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

PriorityQueue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        Integer poll = queue.poll();
        System.out.println("poll = " + poll);
        //3

๐Ÿคจcomparator๋ฅผ ์ง์ ‘๊ตฌํ˜„ํ•˜์—ฌ ์ง‘์–ด๋„ฃ์–ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ํ•˜์˜€๋‹ค.
์œ„์˜ ๊ฒฝ์šฐ ๋žŒ๋‹ค์‹์œผ๋กœ๋„ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2-o1);
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        Integer poll = queue.poll();
        System.out.println("poll = " + poll);
        // 3

์ด ์™ธ์—๋„ ๋‹จ์ˆœํ•˜๊ฒŒ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด Collections.reverseOrder()์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());

๐Ÿ˜Žqueue์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋งŒ์•ฝ ํ•„์š”ํ•˜๋‹ค๋ฉด ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

profile
greenTea์ž…๋‹ˆ๋‹ค.

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