darklight
sublimevimemacs
Java
이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다.
이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요.
16을 삽입 후 최댓값을 삭제합니다. 비어있으므로 [0,0]을 반환합니다.7,5,-5를 삽입 후 최솟값을 삭제합니다. 최대값 7, 최소값 5를 반환합니다.
import java.util.*;
class Solution {
public int[] solution(String[] operations) {
int[] answer = new int[2];
ArrayList <Integer> list = new ArrayList<>();
Queue <String> queue = new LinkedList<>();
for(String str : operations){
queue.offer(str);
}
while(!queue.isEmpty()){
String command = queue.poll();
String head = command.substring(0, 1);
int number = Integer.parseInt(command.substring(2));
if(head.equals("I")){
list.add(number);
}else{
if(list.size() > 0){
if(number < 0){
list = removeMin(list);
}else{
list = removeMax(list);
}
}
}
}
if(list.size() == 0){
answer[0] = 0;
answer[1] = 0;
}else{
answer[0] = getMax(list);
answer[1] = getMin(list);
}
return answer;
}
private int getMax(ArrayList <Integer> arr){
int max = -2147483648;
for(int i : arr){
if(i > max){
max = i;
}
}
return max;
}
private int getMin(ArrayList <Integer> arr){
int min = 2147483647;
for(int i : arr){
if(i < min){
min = i;
}
}
return min;
}
private ArrayList <Integer> removeMax(ArrayList <Integer> arr){
int idx = 0;
int max = -2147483648;
for(int i = 0; i < arr.size(); i++){
if(arr.get(i) > max){
max = arr.get(i);
idx = i;
}
}
arr.remove(idx);
return arr;
}
private ArrayList <Integer> removeMin(ArrayList <Integer> arr){
int idx = 0;
int min = 2147483647;
for(int i = 0; i < arr.size(); i++){
if(arr.get(i) < min){
min = arr.get(i);
idx = i;
}
}
arr.remove(idx);
return arr;
}
}
변수 설정
int[] answer = new int[2];
ArrayList <Integer> list = new ArrayList<>();
Queue <String> queue = new LinkedList<>();
for(String str : operations){
queue.offer(str);
}
ArrayList 내 Max값과 Min값을 제거하여 반환하는 메소드 생성
private ArrayList <Integer> removeMax(ArrayList <Integer> arr){
int idx = 0;
int max = -2147483648;
for(int i = 0; i < arr.size(); i++){
if(arr.get(i) > max){
max = arr.get(i);
idx = i;
}
}
arr.remove(idx);
return arr;
}
private ArrayList <Integer> removeMin(ArrayList <Integer> arr){
int idx = 0;
int min = 2147483647;
for(int i = 0; i < arr.size(); i++){
if(arr.get(i) < min){
min = arr.get(i);
idx = i;
}
}
arr.remove(idx);
return arr;
}