위 문제도 이전 "10773번 : 제로" 문제와 마찬가지로 자바 문서를 참고하여 간단하게 풀이가 가능한 문제이며, 기본적인 자료 구조인 '큐'를 사용하여 푸는 문제이다.
하지만, 저는 "back"(가장 뒤에 있는 정수) 로직을 편하게 수행하기 위해서 LinkedList 컬렉션 프레임웤으로 위 알고리즘을 구현하였습니다.
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.LinkedList;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
LinkedList<String> queue = new LinkedList<>();
while(N-- > 0){
StringTokenizer st = new StringTokenizer(br.readLine());
while(st.hasMoreTokens()){
String str = st.nextToken();
switch(str){
case "push":
queue.add(st.nextToken());
break;
case "pop":
if(!queue.isEmpty()){
sb.append(queue.poll());
}else{
sb.append(-1);
}
break;
case "size":
sb.append(queue.size());
break;
case "empty":
if(queue.isEmpty()){
sb.append(1);
}else{
sb.append(0);
}
break;
case "front":
if(!queue.isEmpty()){
sb.append(queue.peekFirst());
}else{
sb.append(-1);
}
break;
case "back":
if(!queue.isEmpty()){
sb.append(queue.peekLast());
}else{
sb.append(-1);
}
break;
}
if(!str.equals("push")){
sb.append("\n");
}
}
}
br.close();
System.out.println(sb);
}
}