[PS] 99ํด๋ฝ ์ฝํ ์คํฐ๋ 38์ผ์ฐจ TIL (๋ํ์ค ๊ฒ์)
ํ๊ทธ: 99ํด๋ฝ, PS, TIL, ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, ์ฝ๋ฉํ ์คํธ์ค๋น, ํญํด99
์นดํ ๊ณ ๋ฆฌ: PS
๋ฌธ์
์ค๋ช
์คํธ๊ฐ ๊ฐ์ง ๋ณ์ฌ(n) ์ โ๋ฌด์ ๊ถโ k ๊ฐ๋ฅผ ์ด์ฉํด ๋ช enemy ๋ฐฐ์ด์ ๋ช๋ฒ์งธ ์ธ๋ฑ์ค๊น์ง ๊ฐ ์ ์๋์ง ํ์ธํ๋ ๋ฌธ์
ํ์ด
- ๋ฌด์ ๊ถ์ ์ต๋ํ ์ ๊ตฐ์ด ๋ง์ ๋ผ์ด๋์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค. -> PriorityQueue ๋ก ๋ฌด์ ๊ถ์ ์ฌ์ฉ ํ ์ ๊ตฐ ์๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ์ต๋ ํ์ ์ฌ์ฉํ๋ค.
- ๊ฐ ๋ผ์ด๋๋ง๋ค ์ ์ ์๋ฅผ maxHeap ์ ์ ์ฅํ๊ณ , n ์์ ์ ๊ตฐ ์๋ฅผ ์ ๊ฑฐํ๋ฉด์ ์งํํ๋ค.
- ์คํธ๊ฐ ๊ฐ์ง ๋ณ์ฌ์ ์๊ฐ ๋ชจ๋ ์์ง๋๋ฉด, maxHeap ์์ ์ต๋๊ฐ์ ๊บผ๋ด(
maxHeap.poll()
) ๋ผ์ด๋๋ฅผ ํต๊ณผํ ์ ์๋๋ก ํ๋ค.- โ๋ฌด์ ๊ถโ ์ ์ฌ์ฉํ๋ค๋ ์๋ฏธ : ํ์์ ๊บผ๋ธ ๊ฐ์ ๋ค์ n ์ ์ถ๊ฐํ๋ค. ์ฆ, ์คํธ์ ๋ณ์ฌ๋ฅผ ๋ณด์ถฉํ๋ค.
- โ๋ฌด์ ๊ถโ ์ ์ฌ์ฉํ์ผ๋ฏ๋ก -1 ํ๊ณ , ๋ค์ ๋ผ์ด๋๋ก ๋์ด๊ฐ๋ค๋ ์๋ฏธ๋ก answer ๋ฅผ +1 ํด์ค๋ค.
- ๋ง์ฝ ์คํธ์ ๋ณ์ฌ๋ ์๊ณ (n < 0), โ๋ฌด์ ๊ถโ๋ ์๋ค(k < 0)๋ ์๋ฏธ๋ ๋์ด์ ์งํ์ด ๋ถ๊ฐ๋ฅ ํ ๊ฒฝ์ฐ์ด๋ฏ๋ก break
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public int solution(int n, int k, int[] enemy) {
int answer = 0;
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Comparator.reverseOrder());
for (int i = 0; i < enemy.length; i++) {
maxHeap.add(enemy[i]);
n -= enemy[i];
if (n < 0) {
if (k > 0) {
n += maxHeap.poll();
k--;
} else {
break;
}
}
answer++;
}
return answer;
}
}
๋๊ธ๋จ๊ธฐ๊ธฐ