import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main_10845 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();//출력할 (라인)데이터가 많다면 각각 라인 출력하기 보다는 모아서 한번에!!

		int N = Integer.parseInt(br.readLine());// 명령어 수
		
		//대기열 생성(큐 생성)
		Queue<Integer> queue = new ArrayDeque<Integer>();
		/*
		  queue
		  ======================================
out <----                                          <---- in
		  ======================================
		 */
		int last=-1;//마지막 요소를 저장!
		
		for (int i = 0; i < N; i++) { //명령어 수 만큼 반복
			StringTokenizer tokens = new StringTokenizer(br.readLine());
			switch (tokens.nextToken()) {// push pop size empty front back //공백으로 구분된 첫번째 토큰

				case "push":
					//큐에 데이터 삽입
					int value = Integer.parseInt(tokens.nextToken());
					queue.offer(value); //"push 1" 중 두번째 토큰
					last = value;
					break;
				case "pop":
					sb.append(queue.isEmpty() ? -1 : queue.poll()).append('\n');
					break;
				case "size":
					sb.append(queue.size()).append('\n');
					break;
				case "empty":  //if~else ~ return 데이터 => 삼항 연산자 (조건식)? A : B
					sb.append(queue.isEmpty() ? 1 : 0).append('\n');
					break;
				case "front":
					sb.append(queue.isEmpty() ? -1 : queue.peek())
					  .append('\n');
					break;
				case "back":
					sb.append(queue.isEmpty() ? -1 : last)
					  .append('\n');
					break;
			}
		} // 각 명령어 처리

		System.out.println(sb.toString());// 결과 출력

		br.close();
	}// main

}

'코딩테스트' 카테고리의 다른 글

CompleteBinaryTree(완전이진탐색)  (0) 2025.04.11
백준 - 1158 번 요세푸스  (0) 2025.04.11
QueueArray  (0) 2025.04.10
백준 - 2161번 카드1  (0) 2025.04.10
백준 - 10845번 큐  (0) 2025.04.10

+ Recent posts