https://www.acmicpc.net/problem/18258
LinkedList로 구현해서 그런지 큐의 가장 마지막에 들어 있는 요소를 출력하는 메소드가 존재하지 않았다. 그래서 push 할 때, 가장 마지막 요소를 같이 update 해 주도록 구현하였다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Queue<Integer> queue = new LinkedList<>();
int lastElement = -1; //마지막으로 추가된 변수
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
String[] input = br.readLine().split(" ");
switch (input[0]) {
case "push":
queue.add(Integer.parseInt(input[1]));
lastElement = Integer.parseInt(input[1]);
break;
case "pop":
if (queue.isEmpty()) {
sb.append(-1).append("\n");
} else {
sb.append(queue.poll()).append("\n");
}
break;
case "size":
sb.append(queue.size()).append("\n");
break;
case "empty":
if (queue.isEmpty()) {
sb.append(1).append("\n");
} else {
sb.append(0).append("\n");
}
break;
case "front":
if (queue.isEmpty()) {
sb.append(-1).append("\n");
} else {
sb.append(queue.peek()).append("\n");
}
break;
case "back":
if (queue.isEmpty()) {
sb.append(-1).append("\n");
} else {
sb.append(lastElement).append("\n");
}
break;
}
}
System.out.println(sb);
br.close();
}
}