본문 바로가기

OJ

[BOJ] 10845 큐 (JAVA)

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

 

10845번: 큐

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

www.acmicpc.net

문제는 큐인데 Deque로 풀어야 더 쉬운 문제입니다.

back 명령어에 대해서 Queue를 이용하면 원소를 하나씩 다 빼서 확인해야 하지만,

Deque를 이용하면 PeekLast()로 간단하게 명령을 수행할 수 있습니다.

 

import java.io.BufferedReader;
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 Exception {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;
        Deque<Integer> dq = new ArrayDeque<Integer>();
        int N = Integer.parseInt(br.readLine());
        for (int i = 0; i < N; i++) {

            st = new StringTokenizer(br.readLine(), " ");
            String order = st.nextToken();

            if("push".equals(order)) {

                dq.offer(Integer.parseInt(st.nextToken()));

            } else if("pop".equals(order)) {

                if(dq.size() != 0) sb.append(dq.pollFirst()).append("\n");
                else sb.append(-1).append("\n");

            } else if("front".equals(order)) {

                if(dq.size() != 0) sb.append(dq.peekFirst()).append("\n");
                else sb.append(-1).append("\n");

            } else if("back".equals(order)) {

                if(dq.size() != 0) sb.append(dq.peekLast()).append("\n");
                else sb.append(-1).append("\n");

            } else if("size".equals(order)) {

                sb.append(dq.size()).append("\n");;

            } else {

                if(dq.size() == 0) sb.append(1).append("\n");
                else sb.append(0).append("\n");

            }

        }

        System.out.print(sb.toString());

    }
	
}

'OJ' 카테고리의 다른 글