λ¬Έμ
νμ΄
μ΄μ€μ°μ μμνλ₯Ό ꡬννλ λ¬Έμ λ‘, μ£Όμ΄μ§ λͺ λ Ήμ΄λ€μ μ²λ¦¬νμ¬ μ΅μ’ μ μΌλ‘ νμ μ΅λκ°κ³Ό μ΅μκ°μ λ°ννλ κ²μ΄λ€.
1. λ κ°μ μ°μ μμ ν μμ± (μ΅μν, μ΅λν)
- μ΅λν μ λ ¬μ `Collections.reverseOrder()`λ‘ ν μμ μ λ ¬νμ¬ μ΅λνμ λ§λ λ€.
2. λͺ λ Ήμ΄ κ·μΉλλ‘ μ²λ¦¬
- I : min, max λ νμ λͺ¨λ add μ°μ°μ μν
- D 1 : μ΅λκ° μμ
- D -1 : μ΅μκ° μμ
3. νκ° λΉμ΄μμΌλ©΄ [0, 0] λ°ννκ³ , λΉμ΄μμ§ μμΌλ©΄ max.peek()μΌλ‘ μ΅λκ°, min.peek()λ‘ μ΅μκ° λ°νν¨.
class Solution{
public int[] solution(String[] operations) {
PriorityQueue<Integer> min = new PriorityQueue<>();
PriorityQueue<Integer> max = new PriorityQueue<>(Collections.reverseOrder());
StringTokenizer st;
for (int i=0; i<operations.length; i++){
st = new StringTokenizer(operations[i]);
char op = st.nextToken().charAt(0);
int num = Integer.parseInt(st.nextToken());
switch(op) {
case 'I':
min.add(num);
max.add(num);
break;
case 'D':
if(max.isEmpty()) break;
if(num == 1) {
int del = max.poll();
min.remove(del);
}
if(num == -1) {
int del = min.poll();
max.remove(del);
}
}
}
if(max.isEmpty()) {
return new int[] {0, 0};
}
return new int[] {max.peek(), min.peek()};
}
}
'μ½λ© ν μ€νΈ > μλ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€ / μλ° / Lv.3] 43105 μ μ μΌκ°ν (5) | 2024.07.24 |
---|---|
[νλ‘κ·Έλλ¨Έμ€ / μλ° / Lv.2] 70129 μ΄μ§ λ³ν λ°λ³΅νκΈ° (0) | 2024.07.24 |
[νλ‘κ·Έλλ¨Έμ€ / μλ° / Lv.2] 12924 μ«μμ νν (1) | 2024.07.23 |
[νλ‘κ·Έλλ¨Έμ€ / μλ° / Lv.2] 12941 μ΅μκ° λ§λ€κΈ° (0) | 2024.07.11 |
[νλ‘κ·Έλλ¨Έμ€ / μλ° / Lv.2] 12939 μ΅λκ°κ³Ό μ΅μκ° (0) | 2024.07.10 |