[백준] 18258. 큐 2

최대 1 분 소요

문제 링크

[백준] 18258. 큐 2


풀이 과정

큐를 사용해, 문제의 명령에 따라 동작하도록 처리하는 문제입니다.

  • 큐의 가장 뒤를 확인하는 back 이라는 명령이 주어지므로, Deque 의 peekLast 메소드를 사용하기 위해 큐 대신 덱을 사용했습니다.
  • 시간 초과를 방지하기 위해, StringBuilder 객체를 사용했습니다. 또한, append 메소드 를 호출해 개행을 적용시킬 때에도, 새로운 문자열을 또 만드는 작업을 방지하기 위해 append 를 두 번 사용했습니다.


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder answer = new StringBuilder();
        int N = Integer.parseInt(br.readLine());
        Deque<Integer> queue = new ArrayDeque<>();
        StringTokenizer st;

        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            String command = st.nextToken();

            if (command.equals("push")) {
                queue.add(Integer.parseInt(st.nextToken()));
            } else if (command.equals("pop")) {
                answer.append(queue.isEmpty() ? "-1" : queue.poll());
                answer.append("\n");
            } else if (command.equals("size")) {
                answer.append(queue.size());
                answer.append("\n");
            } else if (command.equals("empty")) {
                answer.append(queue.isEmpty() ? "1" : "0");
                answer.append("\n");
            } else if (command.equals("front")) {
                answer.append(queue.isEmpty() ? "-1" : queue.peek());
                answer.append("\n");
            } else {
                answer.append(queue.isEmpty() ? "-1" : queue.peekLast());
                answer.append("\n");
            }
        }

        System.out.println(answer);
    }
}

카테고리:

업데이트:

댓글남기기