๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ๋” ๋งต๊ฒŒ

๋ฟŒ์•ผ._. 2026. 8. 14. 11:00
๋ฌธ์ œ
https://school.programmers.co.kr/learn/courses/30/lessons/42626
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 


< ๋” ๋งต๊ฒŒ >

 

๋ฌธ์ œ ํ’€์ด (Java)

import java.util.*;

class Solution {
	public int solution(int[] scoville, int K) {
		int answer = 0;

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

		for (int i = 0; i < scoville.length; i++) {
			queue.add(scoville[i]);
		}

		while (!queue.isEmpty() && queue.peek() < K) {
			if (queue.size() == 1) {
				answer = -1;
				break;
			}

			int num1 = queue.poll();
			int num2 = queue.poll();
			queue.add(num1 + (num2 * 2));
			answer += 1;
		}
		return answer;
	}
}

 

์šฐ์„ ์ˆœ์œ„ ํ์— scoville ๋ฐฐ์—ด์— ์žˆ๋Š” ๊ฐ’๋“ค์„ ๋‹ค ์ €์žฅํ•œ๋‹ค. queue์˜ peek ๊ฐ’์ด K๋ณด๋‹ค ์ž‘์„ ๋•Œ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1. queue์˜ ํฌ๊ธฐ๊ฐ€ 1์ด๋ผ๋ฉด ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ K ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†์œผ๋ฏ€๋กœ answer์— -1์„ ์ €์žฅํ•˜๊ณ  ์ข…๋ฃŒ

2. queue์—์„œ ๊ฐ’ 2๊ฐœ pop

3. ๊ฐ€์žฅ ๋งต์ง€ ์•Š์€ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ + (๋‘ ๋ฒˆ์งธ๋กœ ๋งต์ง€ ์•Š์€ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ * 2)๋ฅผ queue์— ์ €์žฅ

4. answer +1

 

์ตœ์ข… answer์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.



 

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, 
https://school.programmers.co.kr/learn/challenges