자바 큐 정리 - 백준(큐 2)

응큼한포도·2023년 11월 19일
0

코딩테스트

목록 보기
15/31

큐에서 중요한 거 역시 push와 pop 스택과 다른건 선입선출이란 점 뿐
중요 매서드는 다음과 같이 구현 할 수 있다.

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

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());
        ArrayDeque<Integer> queue = new ArrayDeque<>();

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

            switch (command) {
                case "push":
                    int num = Integer.parseInt(st.nextToken());
                    queue.offer(num);
                    break;
                case "pop":
                    sb.append(queue.isEmpty() ? "-1\n" : String.valueOf(queue.poll()) + "\n");
                    break;
                case "size":
                    sb.append(String.valueOf(queue.size()) + "\n");
                    break;
                case "empty":
                    sb.append(queue.isEmpty() ? "1\n" : "0\n");
                    break;
                case "front":
                    sb.append(queue.isEmpty() ? "-1\n" : String.valueOf(queue.peek()) + "\n");
                    break;
                case "back":
                    sb.append(queue.isEmpty() ? "-1\n" : String.valueOf(queue.peekLast()) + "\n");
                    break;
                default:
                    break;
            }
        }
        System.out.println(sb);
    }
}

스택과 마찬가지로 이미 구현되어 있는 ArrayDeque를 이용했다.
문제에서 효율을 위해서 StringBuilder 등으로 입력과 출력을 처리하였다.

큐를 이해하는 가장 좋은 방법은 맛집 줄서기라고 생각한다.

요즘에 파이브가이즈 같은거 강남에 오픈하면 수 많은 사람이 오픈런을 한다. 제일 먼저 온 사람이 제일 주문도 빨리 할 수 있다. 현실과 다르게 프로그래밍에선 새치기 따위가 없으니 무조건 줄 서야한다. 그래서 큐는 마지막에 넣은 원소를 마지막에서 얻을 수 있다. 리스트로 치면 [5, 3, 1]에 7을 큐 구조로 집어 넣으면 [7, 5, 3, 1]로 전체적으로 한 칸씩 밀어버리고 큐 구조로 값을 얻고 싶으면 제일 오른쪽 1, 즉 가장 첫 번째로 넣은 원소부터 접근 할 수 있다.

profile
미친 취준생

0개의 댓글