μ€νΈλ μμ¦ λνμ€ κ²μμ νΉ λΉ μ Έ μμ΅λλ€. λνμ€ κ²μμ μ€νΈκ° 보μ ν λ³μ¬ n
λͺ
μΌλ‘ μ°μλλ μ μ 곡격μ μμλλ‘ λ§λ κ²μμ
λλ€. λνμ€ κ²μμ λ€μκ³Ό κ°μ κ·μΉμΌλ‘ μ§νλ©λλ€.
μ€νΈλ μ²μμ λ³μ¬ n
λͺ
μ κ°μ§κ³ μμ΅λλ€.
맀 λΌμ΄λλ§λ€ enemy[i]
λ§λ¦¬μ μ μ΄ λ±μ₯ν©λλ€.
λ¨μ λ³μ¬ μ€ enemy[i]
λͺ
λ§νΌ μλͺ¨νμ¬ enemy[i]
λ§λ¦¬μ μ μ λ§μ μ μμ΅λλ€.
μλ₯Ό λ€μ΄ λ¨μ λ³μ¬κ° 7λͺ μ΄κ³ , μ μ μκ° 2λ§λ¦¬μΈ κ²½μ°, νμ¬ λΌμ΄λλ₯Ό λ§μΌλ©΄ 7 - 2 = 5λͺ μ λ³μ¬κ° λ¨μ΅λλ€.
λ¨μ λ³μ¬μ μλ³΄λ€ νμ¬ λΌμ΄λμ μ μ μκ° λ λ§μΌλ©΄ κ²μμ΄ μ’ λ£λ©λλ€.
κ²μμλ 무μ κΆ
μ΄λΌλ μ€ν¬μ΄ μμΌλ©°, 무μ κΆ
μ μ¬μ©νλ©΄ λ³μ¬μ μλͺ¨μμ΄ ν λΌμ΄λμ 곡격μ λ§μ μ μμ΅λλ€.
무μ κΆ
μ μ΅λ k
λ² μ¬μ©ν μ μμ΅λλ€.
μ€νΈλ 무μ κΆ
μ μ μ ν μκΈ°μ μ¬μ©νμ¬ μ΅λν λ§μ λΌμ΄λλ₯Ό μ§ννκ³ μΆμ΅λλ€.
μ€νΈκ° μ²μ κ°μ§κ³ μλ λ³μ¬μ μ n
, μ¬μ© κ°λ₯ν 무μ κΆμ νμ k
, 맀 λΌμ΄λλ§λ€ 곡격ν΄μ€λ μ μ μκ° μμλλ‘ λ΄κΈ΄ μ μ λ°°μ΄ enemy
κ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§λλ€. μ€νΈκ° λͺ λΌμ΄λκΉμ§ λ§μ μ μλμ§ return νλλ‘ solution
ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
n
β€ 1,000,000,000k
β€ 500,000enemy
μ κΈΈμ΄ β€ 1,000,000enemy[i]
β€ 1,000,000enemy[i]
μλ i + 1 λΌμ΄λμμ 곡격ν΄μ€λ μ μ μκ° λ΄κ²¨μμ΅λλ€.enemy[i]
μ κΈΈμ΄λ₯Ό return ν΄μ£ΌμΈμ.n | k | enemy | resut |
---|---|---|---|
7 | 3 | [4, 2, 4, 5, 3, 3, 1] | 5 |
2 | 4 | [3, 3, 3, 3] | 4 |
1, 3, 5 λΌμ΄λμ 곡격μ 무μ κΆμΌλ‘ λ§μλ΄κ³ , 2, 4 λΌμ΄λμ κ°κ° λ³μ¬λ₯Ό 2λͺ , 5λͺ μλͺ¨νλ©΄ 5λΌμ΄λκΉμ§ 곡격μ λ§μ μ μμ΅λλ€. λ, 1, 3, 4λ²μ§Έ 곡격μ 무μ κΆμΌλ‘ λ§μλ΄κ³ , 2, 5 λ²μ§Έ 곡격μ κ°κ° λ³μ¬λ₯Ό 2λͺ , 3λͺ μλͺ¨νμ¬ 5λΌμ΄λκΉμ§ 곡격μ λ§μ μ μμ΅λλ€. κ·Έλ³΄λ€ λ§μ λΌμ΄λλ₯Ό λ§λ λ°©λ²μ μμΌλ―λ‘ 5λ₯Ό return ν©λλ€.
μ€νΈλ λͺ¨λ 곡격μ 무μ κΆμ μ¬μ©νμ¬ 4λΌμ΄λκΉμ§ λ§μ μ μμ΅λλ€.
μ΄ λ¬Έμ λ 그리λμ μ°μ μμ νλ₯Ό μ¬μ©ν΄ ν΄κ²°ν μ μμλ€.
무μ κΆμ μ μ μ«μκ° κ°μ₯ λ§μ λ μ°λ κ²μ΄ ν¨μ¨μ μ΄κΈ° λλ¬Έμ, 무μ κΆμ μΈ μ‘°κ±΄μ μΈμ°λ κ²μ΄ μ΄ λ¬Έμ μ μμ μ΄μλ€κ³ μκ°νλ€.
μ°μ μμ νλ 무μ κΆμ ν¨μ¨μ μΌλ‘ μ¬μ©ν λΌμ΄λλ₯Ό μ μ₯νκΈ° μν΄ μ¬μ©νμλ€.
μλ₯Ό λ€μ΄, μ°μ μμ νμ μ μ₯λμ΄ μλ λΌμ΄λμ μ΅μ μ μ«μλ³΄λ€ λ λ§μ μμ μ μ΄ λμ€λ λΌμ΄λλ₯Ό λ§λλ©΄, ν΄λΉ λΌμ΄λμ 무μ κΆμ μ°λ κ²μ΄ λ ν¨μ¨μ μ΄λ€.
λ°λΌμ μ΄ κ²½μ°μλ κΈ°μ‘΄ λΌμ΄λμμ μ¬μ©νλ 무μ κΆμ μ·¨μ(μ°μ μμ νμμ μ κ±°)νκ³ μλ‘ λ§μ£ΌμΉ λΌμ΄λμμ 무μ κΆμ μ¬μ©(μ°μ μμ νμ μΆκ°)νκ² λλ κ²μ΄λ€.
λ¬Όλ‘ , 무μ κΆ μ¬μ©μ μ·¨μν λΌμ΄λλ νμ¬ λ³μ¬λ‘ μ ν¬λ₯Ό ν΄μΌ νλ€.
import java.util.*;
class Solution {
public int solution(int n, int k, int[] enemy) {
PriorityQueue<Integer> pq = new PriorityQueue<>();
int answer = 0;
if (k >= enemy.length) {
return enemy.length;
}
// μ΄λ°μ 무μ κΆ λ€ μ¬μ©
for (int i = 0; i < k; i++) {
pq.add(enemy[i]); // 무μ κΆ μ¬μ©
answer++; // λ§μλΈ λΌμ΄λ μ¦κ°
}
for (int i = k; i < enemy.length; i++) {
if (pq.peek() < enemy[i] && pq.peek() <= n) {
n -= pq.poll(); // λ¨μ λ³μ¬λ‘ λ§μλ΄κΈ°
pq.add(enemy[i]); // iλ²μ§Έ λΌμ΄λμ λν 무μ κΆ μ¬μ©
answer++; // λ§μλΈ λΌμ΄λ κ°μ μ¦κ°
}
else {
if (enemy[i] > n) {
return answer; // λ μ΄μ μ§ν λΆκ°
}
else {
n -= enemy[i]; // λ¨μ λ³μ¬ μ μ
λ°μ΄νΈ
answer++; // λ§μλΈ λΌμ΄λ κ°μ μ¦κ°
}
}
}
return answer;
}
}
무μ κΆμ κ°μκ° λͺ¨λ λΌμ΄λμ κΈΈμ΄ μ΄μμ΄λ©΄, λͺ¨λ λΌμ΄λλ₯Ό 무쑰건 ν΄λ¦¬μ΄ ν μ μκΈ° λλ¬Έμ λΌμ΄λμ κΈΈμ΄λ₯Ό κ·Έλλ‘ λ¦¬ν΄νλ€.
μΌλ¨ μ΄λ°μ 무μ κΆμ λͺ¨λ μ¬μ©(μ°μ μμ νμ λͺ¨λ μΆκ°)νκ³ , λ§μλΈ λΌμ΄λμ κ°μ answer
λ μ¦κ°μμΌ μ€λ€.
무μ κΆμ μ¬μ©ν λΌμ΄λ μ€ μ΅μκ°(pq
μμ peek()
ν κ°)λ³΄λ€ νμ¬ i
λ²μ§Έ λΌμ΄λμ μ μ μκ° λ λ§κ³ , peek()
ν λΌμ΄λλ₯Ό νμ¬ λ³μ¬μ μλ‘ ν΄λ¦¬μ΄ν μ μλ€λ©΄, ν΄λΉ λΌμ΄λλ₯Ό pq
μμ poll()
ν΄ λ¨μ λ³μ¬ n
μΌλ‘ λ§μλ΄κ³ , νμ¬ i
λ²μ§Έ λΌμ΄λμ λν 무μ κΆμ μ¬μ©νλ€. (answer
μ¦κ°)
3λ² μ‘°κ±΄μ λΆν©νμ§ μμ 무μ κΆμ λ μ΄μ μ¬μ©ν μ μκ³ , νμ¬ i
λ²μ§Έ λΌμ΄λμ μ μ μκ° λ¨μ λ³μ¬λ³΄λ€ λ§λ€λ©΄, λ μ΄μ λΌμ΄λλ₯Ό μ§νν μ μλ λ°©λ²μ΄ μκΈ° λλ¬Έμ νμ¬κΉμ§ λ§μλΈ λΌμ΄λμ κ°μ answer
λ₯Ό λ°ννλ€.
3λ² μ‘°κ±΄μ λΆν©νμ§ μμ 무μ κΆμ λ μ΄μ μ¬μ©ν μ μμ§λ§, νμ¬ i
λ²μ§Έ λΌμ΄λμ μ μ μκ° λ¨μ λ³μ¬λ³΄λ€ μ λ€λ©΄, λ¨μ λ³μ¬λ‘ λΌμ΄λλ₯Ό λ μ§νν μ μκΈ° λλ¬Έμ n
μ κ°μ enemy[i]
λ§νΌ κ°μμμΌ μ€λ€. (answer
μ¦κ°)
무μ κΆ~ 무μ κΆμ΄μΌ~ μ§μ§λΌμ§λΌμ§λΌ μ§ μ§ μ§