Publish:

ํƒœ๊ทธ: , , , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

img_3.png

๋ฌธ์ œ

๋ฌธ์ œ ๋งํฌ

img_3.png

ํ’€์ด

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Solution {
    public int solution(int[] scoville, int K) {
        PriorityQueue<Integer> minHeap = new PriorityQueue<>();
        for (int j : scoville) {
            minHeap.add(j);
        }

        return getInteger(minHeap, K);

    }

    private Integer getInteger(PriorityQueue<Integer> minHeap, int K) {
        int count = 0;

        while (minHeap.peek() < K) {
            // 1
            if (minHeap.size() <= 1) {
                count = -1;
                break;
            }
            Integer firstMin = minHeap.poll();
            Integer secondMin = minHeap.poll();
            int newScoville = firstMin + (secondMin * 2);
            // 2
            minHeap.add(newScoville);
            count++;

        }
        return count;

    }
}

๋ฌธ์ œ์—์„œ ์ž‘์€ ์š”์†Œ๋ฅผ ๊ณ„์†ํ•ด์„œ ๋ฝ‘์•„๋‚ด ๊ณ„์‚ฐํ•˜๋Š” ์กฐ๊ฑด์ด ์žˆ๊ธฐ๋•Œ๋ฌธ์— ์šฐ์„ ์ˆœ์œ„ ํ(Heap) ์„ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ข‹์•„ ๋ณด์ธ๋‹ค. ์ดˆ๊ธฐ ์ž…๋ ฅ ๋ฐฐ์—ด์„ ๋ชจ๋‘ Heap ์— ๋„ฃ์œผ๋ฉด ์ดํ›„ poll() ๋กœ ๊บผ๋‚ผ๋•Œ๋งˆ๋‹ค ์ตœ์†Œ๊ฐ’์ด ๊บผ๋‚ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌํ•˜๋‹ค. (๋งŒ์•ฝ ์ตœ์†Œํž™์ด ์•„๋‹ˆ๋ผ ์ตœ๋Œ€ํž™์ด ํ•„์š”ํ•˜๋‹ค๋ฉด new PriorityQueue<>(Comparator.reverseOrder()) ์ด๋Ÿฐ ์‹์œผ๋กœ Comparator ํƒ€์ž…์˜ ์ •๋ ฌ ์กฐ๊ฑด์„ ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.)

๋จผ์ € ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ ์žฌ๊ณ„์‚ฐ ํ•ด์„œ ๋‹ค์‹œ ํž™์œผ๋กœ ๊ณ„์†ํ•ด์„œ ๋„ฃ์–ด์ฃผ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. 2๋ฒˆ ์ฃผ์„์—์„œ ๊ทธ ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ ํ›„ ์ž‘์—… ํšŸ์ˆ˜๋ฅผ 1 ์ฆ๊ฐ€์‹œ์ผœ ์ค€ ๋’ค ๋‹ค์‹œ while ๋ฌธ ์กฐ๊ฑด์„ ํ™•์ธํ•˜๊ฒŒ ๋œ๋‹ค. ์ตœ์†Œํž™์—์„œ minHeap.peek() ์€ ํ•ญ์ƒ ์ตœ์†Œ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์ด K ๋ณด๋‹ค ์ปค์•ผ ๋œ๋‹ค ๋Š” ๊ฒƒ์€ ์ตœ์†Œ๊ฐ’์ด K ๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๋‚˜๋จธ์ง€ ํ•ญ๋ชฉ์€ ๋ณผ ํ•„์š” ์—†๊ฒŒ๋œ๋‹ค.

๋‹จ์ง€ ํž™์—์„œ ๊บผ๋‚ธ ๊ทธ ๊ฐ’๋งŒ ๊ฐ€์ง€๊ณ  ์กฐ๊ฑด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด ์ง„๋‹ค.

๋งŒ์•ฝ ์šฐ์„ ์ˆœ์œ„ ํ๊ฐ€ ์•„๋‹Œ ArrayList ๋‚˜ ๋ฐฐ์—ด๋กœ ํ’€๊ฒŒ๋˜๋ฉด ์ •๋ ฌ ํ•˜๋Š” ์ž‘์—…์„ ์ถ”๊ฐ€๋กœ ํ•ด์•ผ๋œ๋‹ค.

while ๋ฌธ์„ ์ถฉ๋ถ„ํžˆ ๋Œ๊ณ ๋‚˜๋ฉด ํž™์˜ ํ•ญ๋ชฉ์ด ๊ณ„์† ์ค„์–ด๋“ค์–ด ๊ฒฐ๊ตญ ์ € ๊ณ„์‚ฐ์‹์„ ์ˆ˜ํ–‰ํ•  ๋งŒํผ์˜ ํ•ญ๋ชฉ๋„ ๋‚จ์ง€ ์•Š๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ ์กฐ๊ฑด์ด 1๋ฒˆ ์ฃผ์„์— ํ•ด๋‹นํ•œ๋‹ค. ํž™์˜ ํ•ญ๋ชฉ์ด 1๊ฐœ ์ดํ•˜๋กœ ๋–จ์–ด์ง€๊ฒŒ ๋˜๋ฉด ๋”์ด์ƒ newScoville ๊ฐ’์„ ๋งŒ๋“ค ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” -1 ์„ ๋ฆฌํ„ดํ•ด์ค˜์•ผ ํ•œ๋‹ค.

๋ฐฉ๋ฌธํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋Œ“๊ธ€,์ง€์ ,ํ”ผ๋“œ๋ฐฑ ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค๐Ÿ˜Š

๐Ÿ˜€

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ