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