본문 바로가기

Baekjoon

[Java] 백준 10866번 : 덱

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

 

10866번: 덱

첫째 줄에 주어지는 명령의 수 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.ArrayDeque;

public class Main10866 {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        ArrayDeque<Integer> dq = new ArrayDeque<>();
        StringBuilder sb = new StringBuilder();


        while (N --> 0){
            String [] str = br.readLine().split(" ");

            switch (str[0]){
                case "push_front": {
                    dq.addFirst(Integer.parseInt(str[1]));
                    break;
                }
                case "push_back" : {
                    dq.addLast(Integer.parseInt(str[1]));
                    break;
                }
                case "pop_front": {
                    if(dq.isEmpty()){
                        sb.append(-1).append("\n");
                    }else {
                        sb.append(dq.removeFirst()).append("\n");
                    }
                    break;
                }
                case "pop_back" : {
                    if(dq.isEmpty()){
                        sb.append(-1).append("\n");
                    }else {
                        sb.append(dq.removeLast()).append("\n");
                    }
                    break;
                }
                case "size": {
                    sb.append(dq.size()).append("\n");
                    break;
                }
                case "empty":{
                    if(dq.isEmpty()){
                        sb.append(1).append("\n");
                    }else {
                        sb.append(0).append("\n");
                    }
                    break;
                }
                case "front":{
                    if(dq.isEmpty()){
                        sb.append(-1).append("\n");
                    }else {
                        sb.append(dq.peekFirst()).append("\n");
                    }
                    break;
                }
                case "back": {

                    if (dq.isEmpty()) {
                        sb.append(-1).append("\n");
                    } else {
                        sb.append(dq.peekLast()).append("\n");
                    }
                    break;
                }

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

'Baekjoon' 카테고리의 다른 글

[Java] 백준 9012번 : 괄호  (0) 2022.01.14
[Java] 백준 10845번 : 큐  (0) 2022.01.12
[Java] 백준 1966번 : 프린터 큐  (0) 2022.01.12
[Java] 백준 7568번 : 덩치  (0) 2022.01.10
[Java] 백준 11866 : 요세푸스 문제 0  (0) 2022.01.10