
대놓고 큐를 사용하라고 알려주는 문제이다.까다롭게 시간 제한이 달려있어서 반드시 buffer를 사용해야 한다.
입력값의 push x 저거 때문에 머리 터지는줄 알았다.이래저래 해보고 내린 결론은,push고 뭐고가 중요한게 아니고 '공백'이 들어가냐 아니냐가 핵심이었다.if else문으로 공백이 들어간 경우를 switch문 밖으로 빼내어서 따로 처리했다.switch문 자체는 어렵지 않았다.
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.LinkedList;
import java.util.Queue;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Queue<Integer> q = new ArrayDeque<>();
int N = Integer.parseInt(br.readLine());
for(int i=0;i<N;i++){
String str=br.readLine();
String[] str2 = new String[2];
//공백이 존재하는 경우에만 토큰을 사용한다.
if(str.contains(" ")){
StringTokenizer st = new StringTokenizer(str," ");
str2[0] = st.nextToken();
str2[1] = st.nextToken();
}
// 공백이 있는 경우를 switch문 밖으로 꺼내었다.
if(str.contains(" ")){
q.add(Integer.parseInt(str2[1]));
}else{
switch(str){
case "pop":
if(q.size()==0){
System.out.println(-1);
break;
}
System.out.println(q.poll());
break;
case "size":
System.out.println(q.size());
break;
case "empty":
if(q.size()==0){
System.out.println(1);
break;
}else{
System.out.println(0);
break;
}
case "front":
if(q.size()==0){
System.out.println(-1);
break;
}else{
System.out.println(q.peek());
break;
}
case "back":
if(q.size()==0){
System.out.println(-1);
break;
}
System.out.println(((ArrayDeque<Integer>)q).getLast());
break;
}
}
}
}
}