엄지월드

백준 10845 큐 본문

알고리즘

백준 10845 큐

킨글 2024. 4. 15. 20:44

문제

 

방법

큐의 작동을 구현하는 문제이지만, 가장 나중에 넣은 값도 알아야 하고 가장 먼저 넣은 값도 알아야 해서 Deque로 풀어야 편하게 풀 수 있다. 

 

코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Deque;
import java.util.LinkedList;

public class Main {
    // 10845
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int N = Integer.parseInt(br.readLine());
        Deque<Integer> dq = new LinkedList<>();
        // push X: 정수 X를 큐에 넣는 연산이다.
        // pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
        // size: 큐에 들어있는 정수의 개수를 출력한다.
        // empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
        // front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
        // back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
        for (int i = 1; i <= N; i++) {
            String input = br.readLine();
            if (input.contains("push")) {
                String arr[] = input.split(" ");
                dq.add(Integer.parseInt(arr[1]));
            } else if ("front".equals(input)) {
                bw.write(dq.peekFirst() == null ? "-1\n" : dq.peekFirst() + "\n");
            } else if ("back".equals(input)) {
                bw.write(dq.peekLast() == null ? "-1\n" : dq.peekLast() + "\n");
            } else if ("size".equals(input)) {
                bw.write(dq.size() + "\n");
            } else if ("empty".equals(input)) {
                bw.write(dq.isEmpty() ? "1\n" : "0\n");
            } else if ("pop".equals(input)) {
                if (dq.isEmpty()) {
                    bw.write("-1\n");
                } else {
                    bw.write(dq.pollFirst() + "\n");
                }
            }
        }

        bw.flush();
        bw.close();
    }
}

'알고리즘' 카테고리의 다른 글

백준 1543 문서 검색  (0) 2024.04.16
백준 1920 수 찾기  (0) 2024.04.15
백준 13241 최소공배수  (0) 2024.04.14
백준 2167 2차원 배열의 합  (0) 2024.04.08
백준 11004 K번째 수  (0) 2024.04.07
Comments