[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] LV.2 ๋” ๋งต๊ฒŒ

 

1. ๋ฌธ์ œ : Link

๋ฐฐ์—ด์„ ์ฃผ๊ณ  ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๊ฐ€ K๋ณด๋‹ค ํฌ๊ฒŒ๋” ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฌธ์ œ

๊ฐ€์žฅ ์ž‘์€ ์ˆ˜์™€ ๋‘ ๋ฒˆ์งธ๋กœ ์ž‘์€์ˆ˜๋ฅผ mixํ•˜์—ฌ ํฐ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š”๋ฐ ์ด ์ˆ˜๊ฐ€ K๋ณด๋‹ค ์ž‘์€์ง€ ํฐ์ง€ ํ™•์ธํ•ด์ค˜์•ผํ•จ

 

2. ํ’€์ด

๋ฐฐ์—ด๊ณผ pop์„ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ๋–จ์–ด์ง

heapq๋ฅผ ์ด์šฉํ•ด์„œ min๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ํšจ์œจ์„ ๋†’์ž„

 

3. ์ฝ”๋“œ

def solution(scoville, K):
    answer = 0
    while 1: 
        p = 0
        if len(scoville) == 1:
            if scoville[0] >= K:
                return answer
            else:
                return -1
        for s in scoville:
            if s < K:
                break
            else:
                p += 1
        if p == len(scoville):
            return answer
        else:  
            scoville.sort()
            new = scoville.pop(0) + (scoville.pop(0) * 2)
            scoville.append(new)
            answer += 1
import heapq
def solution(scoville, K):
    answer = 0
    heapq.heapify(scoville)
    
    while scoville[0] < K:
        mix = heapq.heappop(scoville) + (heapq.heappop(scoville) * 2)
        heapq.heappush(scoville, mix)
        answer += 1
        if len(scoville) == 1 and scoville[0] < K:
            return -1
    return answer
import java.util.*;

class Solution {
    public int solution(int[] scoville, int K) {
        
        int answer = 0;
        PriorityQueue<Integer> pq = new PriorityQueue<>();

        // priority queue ์ƒ์„ฑ
        for (int i : scoville) {
            pq.add(i);
        }

        while (true) {
            // ์ตœ์†Œ์น˜๋ฅผ ๋„˜์€ ๊ฒฝ์šฐ ์ข…๋ฃŒ
            if (pq.peek() >= K) break;
			
            // ๋” ์ด์ƒ ์„ž์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ -1 ํ›„ ์ข…๋ฃŒ
            if (pq.size() == 1) {
                answer = -1;
                break;
            }
            
            // 2๊ฐœ๋ฅผ ๋ฝ‘์•„ ์„ž๊ณ  ๋‹ค์‹œ ์‚ฝ์ž…
            pq.add(pq.poll() + pq.poll() * 2);
            answer++;
        }
        
        return answer;
    }
}
  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ๋„ค์ด๋ฒ„ ๋ฐด๋“œ์— ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜ค์Šคํ† ๋ฆฌ ๊ณต์œ ํ•˜๊ธฐ