[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;
}
}
λκΈλ¨κΈ°κΈ°