정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 여섯 가지이다.
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
그냥 Queue하나 생성해서 문제에서 하라는 대로 하면 된다...!
import java.util.*;
import java.io.*;
//import java.math.BigInteger;
public class Main{
public static void main(String [] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
final int NUMBER_OF_ORDER = Integer.parseInt(br.readLine());
Deque<Integer> dq = new ArrayDeque<Integer>();
for(int i=0;i<NUMBER_OF_ORDER;i++) {
st = new StringTokenizer(br.readLine());
String order = st.nextToken();
switch(order) {
case "push" :
int num = Integer.parseInt(st.nextToken());
dq.push(num);
break;
case "pop" :
if(dq.isEmpty()) {
sb.append(-1);
}else {
sb.append(dq.pollLast());
}
sb.append("\n");
break;
case "size" :
sb.append(dq.size());
sb.append("\n");
break;
case "empty" :
if(dq.isEmpty()) {
sb.append(1);
}else {
sb.append(0);
}
sb.append("\n");
break;
case "front" :
if(dq.isEmpty()) {
sb.append(-1);
}else {
sb.append(dq.peekLast());
}
sb.append("\n");
break;
case "back" :
if(dq.isEmpty()) {
sb.append(-1);
}else {
sb.append(dq.peekFirst());
}
sb.append("\n");
break;
}
}
sb.append("\n");
bw.write(sb.toString());
bw.flush();
br.close();
bw.close();
}
}