โ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/42628
์ฑ๋ฅ ์์ฝ
๋ฉ๋ชจ๋ฆฌ: 16.5 MB, ์๊ฐ: 608.55 ms
๋ฌธ์ ์ค๋ช
์ด์ค ์ฐ์ ์์ ํ๋ ๋ค์ ์ฐ์ฐ์ ํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋งํฉ๋๋ค.
๋ช ๋ น์ด | ์์ ํ(๋์ด) |
I ์ซ์ | ํ์ ์ฃผ์ด์ง ์ซ์๋ฅผ ์ฝ์ ํฉ๋๋ค. |
D 1 | ํ์์ ์ต๋๊ฐ์ ์ญ์ ํฉ๋๋ค. |
D -1 | ํ์์ ์ต์๊ฐ์ ์ญ์ ํฉ๋๋ค. |
์ด์ค ์ฐ์ ์์ ํ๊ฐ ํ ์ฐ์ฐ operations๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ์ฐ์ฐ์ ์ฒ๋ฆฌํ ํ ํ๊ฐ ๋น์ด์์ผ๋ฉด [0,0] ๋น์ด์์ง ์์ผ๋ฉด [์ต๋๊ฐ, ์ต์๊ฐ]์ return ํ๋๋ก solution ํจ์๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
์ ํ์ฌํญ
- operations๋ ๊ธธ์ด๊ฐ 1 ์ด์ 1,000,000 ์ดํ์ธ ๋ฌธ์์ด ๋ฐฐ์ด์ ๋๋ค.
- operations์ ์์๋ ํ๊ฐ ์ํํ ์ฐ์ฐ์ ๋ํ๋
๋๋ค.
- ์์๋ “๋ช ๋ น์ด ๋ฐ์ดํฐ” ํ์์ผ๋ก ์ฃผ์ด์ง๋๋ค.- ์ต๋๊ฐ/์ต์๊ฐ์ ์ญ์ ํ๋ ์ฐ์ฐ์์ ์ต๋๊ฐ/์ต์๊ฐ์ด ๋ ์ด์์ธ ๊ฒฝ์ฐ, ํ๋๋ง ์ญ์ ํฉ๋๋ค.
- ๋น ํ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ผ๋ ์ฐ์ฐ์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ, ํด๋น ์ฐ์ฐ์ ๋ฌด์ํฉ๋๋ค.
์ ์ถ๋ ฅ ์
operations | return |
["I 16", "I -5643", "D -1", "D 1", "D 1", "I 123", "D -1"] | [0,0] |
["I -45", "I 653", "D 1", "I -642", "I 45", "I 97", "D 1", "D -1", "I 333"] | [333, -45] |
โ๐ปํ์ด
๋ฆฌ์คํธ๋ฅผ ๋ฑ์ฒ๋ผ ํ์ฉ.
I์ธ ๊ฒฝ์ฐ ๊ฐ์ ์ฝ์
.
D์ด๋ฉด์ 1์ธ ๊ฒฝ์ฐ ์ต๋๊ฐ ์ญ์ . -1์ธ ๊ฒฝ์ฐ ์ต์๊ฐ ์ญ์ .
๊ฐ์ ์ฝ์
ํ๊ฑฐ๋ ์ ๊ฑฐํ ํ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ. (n๋ฒ ๋ฐ๋ณตํ๊ฒ ๋จ)
๋น์ด์๋ค๋ฉด ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ 0์ผ๋ก ์ฒ๋ฆฌ.
๊ทธ๋ ์ง ์๋ค๋ฉด ์ต๋๊ฐ์ ๋ฆฌ์คํธ์ ์ฒซ๋ฒ์งธ ๊ฐ์ผ๋ก, ์ต์๊ฐ์ ๋ฆฌ์คํธ์ ๋ง์ง๋ง ๊ฐ์ผ๋ก ์ฒ๋ฆฌ.
๐ป์ฝ๋ 1
/** ๋ฆฌ์คํธ ์ฌ์ฉ **/
/** ๋ฐฐ์ด ๊ธธ์ด๋งํผ ๊ณ์ ์ ๋ ฌํ๋ฏ๋ก ์๋๋ฉด์์ ์ข์ง ์์ **/
import java.util.*;
class Solution {
public int[] solution(String[] operations) {
int[] answer = new int[2];
List<Integer> dq = new ArrayList<>();
for(int i = 0; i < operations.length; i++){
String[] s = operations[i].split(" ");
if(s[0].equals("I")){
dq.add(Integer.parseInt(s[1]));
}
else if(!dq.isEmpty() && s[0].equals("D")){
if(s[1].equals("1"))
dq.remove(0);
else
dq.remove(dq.size() - 1);
}
dq.sort((o1, o2) -> (o2 - o1));
}
if(dq.isEmpty()){
answer[0] = 0;
answer[1] = 0;
}else{
answer[0] = dq.get(0);
answer[1] = dq.get(dq.size() - 1);
}
return answer;
}
}
๐ป์ฝ๋ 2
/** ์ฐ์ ์์ํ ์ฌ์ฉ **/
import java.util.*;
class Solution {
public int[] solution(String[] operations) {
int[] answer = new int[2];
PriorityQueue<Integer> pq = new PriorityQueue<>(); // ์ต์ ํ
PriorityQueue<Integer> rpq = new PriorityQueue<>(Collections.reverseOrder()); // ์ต๋ ํ
for(int i = 0; i < operations.length; i++){
String[] s = operations[i].split(" ");
if(s[0].equals("I")){
pq.add(Integer.parseInt(s[1]));
rpq.add(Integer.parseInt(s[1]));
}
else if(!pq.isEmpty() && !rpq.isEmpty() && s[0].equals("D")){
if(s[1].equals("1")){
int max = rpq.poll();
pq.remove(max);
}
else{
int min = pq.poll();
rpq.remove(min);
}
}
}
if(pq.isEmpty() && rpq.isEmpty()){
answer[0] = 0;
answer[1] = 0;
}else{
answer[0] = rpq.peek();
answer[1] = pq.peek();
}
return answer;
}
}
๐ก์๋ก ๋ฐฐ์ด ๋ด์ฉ
๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ์ ์์ ํ๋ ์ญ์ ์ ๋ฃจํธ ๋
ธ๋ ๊ฐ์ ์ ๊ฑฐ.
Java์์ PriorityQueue ํด๋์ค์์ removeํจ์์ ์ ๊ฑฐํ๊ณ ์ํ๋ ๊ฐ์ ๋ฃ์ผ๋ฉด ํด๋น ๊ฐ ์ญ์ .
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 9461.ํ๋๋ฐ ์์ด/Java - Silver3 (0) | 2024.10.15 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฐ์ฅ ํฐ ์/Java - Lv.2 (0) | 2024.10.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฒ ์คํธ์จ๋ฒ/Java - Lv.3 (0) | 2024.10.07 |
[ํ๋ก๊ทธ๋๋จธ์ค]์์ฃผํ์ง ๋ชปํ ์ ์/Java - Lv.1 (0) | 2024.10.06 |
[Baekjoon] 14889.์คํํธ์ ๋งํฌ/Java - Silver1 (0) | 2024.09.29 |