Algorithm

[036] 10845.큐

JEE-JEEE 2024. 3. 25. 17:03

✨ 알고리즘 분류 : 자료 구조 / 큐

 

https://www.acmicpc.net/problem/10845

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net


 

 

🪡 문제에서 요구하는 조건 정리

기본적인 큐에 관한 문제이다. 큐의 특성을 이용하여 입출력을 간단히 구현하도록 하는 것이 조건.

 

🧶 풀이과정 

자바에서는 스택과 큐를 함께 사용하는 deque 이 제공된다. 이것을 통하여 풀이를 하면 되고,  크게 어렵지 않은 문제라 설명이 (...!)

저번 스택 문제에서는 if문을 사용했는데, 조금 더 가독성을 높이기 위해 swich를 사용하고, 조금 더 더 쉽게 하기 위해서 하나를 제외하고는 삼항연산자로 구현했다.

 

🏹 제출코드

 

package data_structure_part_01;

import java.io.*;
import java.util.ArrayDeque;
import java.util.Deque;

public class Q10845 {

    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<String> deq = new ArrayDeque<>();

        for(int i = 0; i < n ; i++){
            String[] arr = br.readLine().split(" ");
            String str = arr[0];
            String enter = ( i != n-1) ? "\n" : "";

            switch (str) {

                case("push") :
                    deq.add(arr[1]);
                    break;

                case("pop") :
                    if(deq.isEmpty()){
                        bw.write("-1" + enter);
                    }else{
                        bw.write(deq.poll() + enter);
                    }
                    break;

                case("size") :
                    bw.write(deq.size() + enter);
                    break;

                case("empty") :
                    bw.write( deq.isEmpty() ? "1" : "0");
                    bw.write( enter );
                    break;

                case("front") :
                    bw.write( deq.isEmpty() ? "-1" + enter : deq.peek() + enter);
                    break;

                case("back") :
                    bw.write( deq.isEmpty() ? "-1" + enter : deq.peekLast() + enter);

            }

        }


        bw.flush();
        bw.close();
        br.close();

    }
}