백준 - JAVA/큐, 덱

[백준] 18258번 큐 2 _ JAVA ( 주석 설명 )

wch_s 2023. 3. 18. 16:50

풀이

1) 명령의 수 n 를 입력받는다.

2) 각 명령마다 문제의 조건에 해당하는 출력을 StringBuilder에 저장한다.

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //빠른 입력을 위해 버퍼를 이용해 입력을 받는다.
        StringTokenizer st;
        int N = Integer.parseInt(br.readLine());

        StringBuilder sb = new StringBuilder();
        Queue<Integer> queue = new LinkedList<>(); //LinkedList 사용
        int last = -1; //queue의 가장 뒤에 있는 정수 출력을 위한 변수
        for(int i=0;i<N;++i){
            st = new StringTokenizer(br.readLine());

            switch (st.nextToken()){ //문제 조건대로 명령 정의
                case "push":
                    int input = Integer.parseInt(st.nextToken()); //queue에 넣을 정수 입력
                    queue.add(input); //queue는 push가 아닌 add 명령어 사용
                    last = input;
                    break;

                case "pop":
                    if(queue.isEmpty()) //queue가 비어있다면
                        sb.append(-1).append('\n');
                    else //queue에 값이 있다면
                        sb.append(queue.poll()).append('\n'); //queue는 pop이 아닌 poll 명령어 사용
                    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(last).append('\n'); //queue의 가장 뒤에 있는 정수 출력
                    break;
            }
        }
        System.out.println(sb);
    }
}