[백준] 10845

ninano05·2026년 3월 17일
import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int n = Integer.parseInt(br.readLine());
        String[] command = new String[n];
        int[] s = new int[n];
        
        for(int i=0;i<n;i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            String comm = st.nextToken();
            if(comm.equals("push")) {
                command[i] = comm;
                s[i] = Integer.parseInt(st.nextToken());
            } else {
                command[i] = comm;
            }
        }
        for(int r : solution(n, command, s)) {
            bw.write(r+"\n");
        }
        bw.flush();
        bw.close();
        br.close();
    }
    
    public static ArrayList<Integer> solution(int n, String[] command, int[] s) {
        Deque<Integer> queue = new ArrayDeque<>();
        ArrayList<Integer> answer = new ArrayList<>();
        
        for(int i=0;i<n;i++) {
            if(command[i].equals("push")) {
                queue.offer(s[i]);
            } else if(command[i].equals("pop")) {
                if(queue.isEmpty()) {
                    answer.add(-1);
                } else {
                    answer.add(queue.poll());
                }
            } else if(command[i].equals("size")) {
                answer.add(queue.size());
            } else if(command[i].equals("empty")) {
                if(queue.isEmpty()) {
                    answer.add(1);
                } else {
                    answer.add(0);
                }
            } else if(command[i].equals("front")) {
                if(queue.isEmpty()) {
                    answer.add(-1);
                } else {
                    answer.add(queue.peek());
                }
            } else if(command[i].equals("back")) {
                if(queue.isEmpty()) {
                    answer.add(-1);
                } else {
                    answer.add(queue.peekLast());
                }
            }
        }
        return answer;
    }
}
  • Queue 대신 Deque를 적극 활용하자
  • Deque는 offerLast(), peekLast()와 같이 앞 뒤 모두 사용 가능
profile
초보 개발자

0개의 댓글