알고리즘

[백준] 10866번 덱 _ JAVA ( 주석 설명 ) 본문

백준 - JAVA/큐, 덱

[백준] 10866번 덱 _ JAVA ( 주석 설명 )

wch_s 2023. 3. 22. 14:02

풀이

1) ArrayDeque 를 사용해서 Deque 정의한다.

2) 문제에서 주어진 명령 8가지를 Deque 함수를 사용해서 명령을 구현한다.

 

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();

        int N = Integer.parseInt(br.readLine()); //명령의 개수

        Deque<Integer> deque = new ArrayDeque<>(); //ArrayDeque로 덱 선언
        for(int i=0;i<N;++i){
            st = new StringTokenizer(br.readLine());

            switch (st.nextToken()){
                //문제의 명령에 맞게끔 deque 함수를 사용해서 명령을 정의한다.
                case "push_front":
                    int num = Integer.parseInt(st.nextToken());
                    deque.offerFirst(num);
                    break;

                case "push_back":
                    num = Integer.parseInt(st.nextToken());
                    deque.offerLast(num);
                    break;

                case "pop_front":
                    Integer pop = deque.pollFirst();
                    if(pop==null)
                        sb.append(-1).append('\n');
                    else
                        sb.append(pop).append('\n');
                    break;

                case "pop_back":
                    pop = deque.pollLast();
                    if(pop==null)
                        sb.append(-1).append('\n');
                    else
                        sb.append(pop).append('\n');
                    break;

                case "size":
                    sb.append(deque.size()).append('\n');
                    break;

                case "empty":
                    if(deque.isEmpty())
                        sb.append(1).append('\n');
                    else
                        sb.append(0).append('\n');
                    break;

                case "front":
                    Integer peek = deque.peekFirst();
                    if(peek==null)
                        sb.append(-1).append('\n');
                    else
                        sb.append(peek).append('\n');
                    break;

                case "back":
                    peek = deque.peekLast();
                    if(peek==null)
                        sb.append(-1).append('\n');
                    else
                        sb.append(peek).append('\n');
                    break;
            }
        }
        System.out.println(sb);
    }
}