백준[baekjoon]/JAVA

백준(baekjoon) [JAVA] - 10845번: 큐

_KTH_ 2023. 6. 22. 16:01
728x90

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

 

10845번: 큐

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

www.acmicpc.net


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class _10845 {
    public static void main(String[] args) throws IOException {
        Queue<Integer> queue = new LinkedList<>();
        BufferedReader br  = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st;
        int back_data = 0;
        int n = Integer.parseInt(br.readLine());
        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            String command = st.nextToken();
            switch(command) {
                case "push":
                    int data = Integer.parseInt(st.nextToken());
                    queue.offer(data);
                    back_data = data;
                    break;
                case "pop":
                    if (queue.isEmpty())
                        System.out.println(-1);
                    else
                        System.out.println(queue.poll());

                    break;
                case "size":
                    System.out.println(queue.size());

                    break;
                case "empty":
                    if (queue.isEmpty())
                        System.out.println(1);
                    else
                        System.out.println(0);

                    break;
                case "front":
                    if (queue.isEmpty())
                        System.out.println(-1);
                    else
                        System.out.println(queue.peek());

                    break;
                case "back":
                    if (queue.isEmpty())
                        System.out.println(-1);
                    else
                        System.out.println(back_data);
            }
        }
    }
}

MEMO

-- java에서 제공하는 큐의 기능을 이용하면 쉽게 해결 가능

-- back 부분만 최근에 push한 값을 기억한 뒤 처리해주면 된다

-- if else 문을 삼항 연산자로 구현하면 더 간결해짐

 

!! java 문자열 익숙해지기 !!

728x90
728x90