1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import java.util.*;
class Solution {
// 이진 탐색으로 탐색하여 삽입해야 할 위치 반환
public static int getIndex(ArrayList<Integer> list, int num) {
int mid;
int left = 0;
int right = list.size() - 1;
while (left <= right) {
mid = (left + right) / 2;
if (list.get(mid) < num) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return left;
}
public int[] solution(String[] operations) {
int[] answer = new int[2];
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < operations.length; i++) {
String[] arr = operations[i].split(" ");
int n = Integer.parseInt(arr[1]);
if (arr[0].equals("I")) {
int index = getIndex(list, n);
list.add(index, n);
} else {
if (!list.isEmpty()) {
list.remove(n == 1 ? list.size() - 1 : 0);
}
}
}
if (!list.isEmpty()) {
answer[0] = list.get(list.size() - 1);
answer[1] = list.get(0);
}
return answer;
}
}
|
cs |
이진 탐색으로 삽입할 위치를 찾아서 넣고, 최댓값과 최솟값을 제거해주었다.
PriorityQueue를 사용하려 했지만 맨 앞의 값을 삭제하는 방법을 몰라서 사용하지 못하였다.
하지만 PriorityQueue의 remove 메소드를 통해 앞에 있는 값도 삭제할 수 있다.