import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
static Queue<Integer> queue = new LinkedList<>();
static int last = 0;
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int num = Integer.parseInt(bf.readLine());
for (int i = 0; i<num; i++) {
StringTokenizer st = new StringTokenizer(bf.readLine());
String text = st.nextToken();
switch (text) {
case "push":
push(Integer.parseInt(st.nextToken()));
break;
case "pop":
sb.append(pop()).append('\n');
break;
case "size":
sb.append(size()).append('\n');
break;
case "empty":
sb.append(empty()).append('\n');
break;
case "front":
sb.append(front()).append('\n');
break;
case "back":
sb.append(back()).append('\n');
break;
}
}
System.out.println(sb);
}
private static void push(int N) {
queue.add(N);
last = N;
}
private static int pop() {
if (queue.isEmpty()) {
return -1;
} else {
return queue.remove();
}
}
private static int size() {
return queue.size();
}
private static int empty() {
if (queue.isEmpty()) {
return 1;
} else {
return 0;
}
}
private static int front() {
if (queue.isEmpty()) {
return -1;
} else {
return queue.peek();
}
}
private static int back() {
if (queue.isEmpty()) {
return -1;
} else {
return last;
}
}
}
큐의 기본적인 사용방법을 묻는 문제였다. 메서드로 분리해서 보니 가독성이 좋았다.
다만 문제에서 큐의 마지막 수를 출력하는 조건이 있다.
그런 명령어는 없어 다른 방법을 찾아야하는데 단순히 push할때 변수로 저장해 두면 쉽게 풀 수 있었다.