[白俊]10866号:DEK



📌 質問する


整数を格納するDequeを実行し、入力としてのコマンドを処理するプログラムを作成します.
命令は全部で8条ある.
  • push frontX:整数Xをインデックスの前に配置します.
  • push backX:整数Xをインデックスの後ろに配置します.
  • pop front:インデックスの一番前の数字を削除し、その数字を出力します.インデックスに整数がない場合は、-1が出力されます.
  • pop back:dexの最後の数字を出力します.インデックスに整数がない場合は、-1が出力されます.
  • size:インデックス内の整数の個数を出力します.
  • 空:インデックスが空の場合、1または0が出力されます.
  • front:インデックスの一番前の整数を出力します.インデックスに整数がない場合は、-1が出力されます.
  • back:インデックスの一番後ろの整数を出力します.インデックスに整数がない場合は、-1が出力されます.
  • 入力


    1行目に与えられるコマンド数N(1≦N≦10000).2行目からN行目までそれぞれ1つのコマンドがあります.与えられた整数は1以上であり、100000以下である.問題にない命令はない.

    しゅつりょく


    出力するコマンドが発行されるたびに、各行に1つのコマンドが出力されます.

    入力例1

    15
    push_back 1
    push_front 2
    front
    back
    size
    empty
    pop_front
    pop_back
    pop_front
    size
    empty
    pop_back
    push_front 3
    empty
    front

    サンプル出力1

    2
    1
    2
    0
    2
    1
    -1
    0
    1
    -1
    0
    3

    入力例2

    22
    front
    back
    pop_front
    pop_back
    push_front 1
    front
    pop_back
    push_back 2
    back
    pop_front
    push_front 10
    push_front 333
    front
    back
    pop_back
    pop_back
    push_back 20
    push_back 1234
    front
    back
    pop_back
    pop_back

    サンプル出力2

    -1
    -1
    -1
    -1
    1
    1
    2
    2
    333
    10
    10
    333
    20
    1234
    1234
    20

    📌 答えを出す。

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Deque;
    import java.util.LinkedList;
    
    public class Main {
    
        static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
        static StringBuilder sb = new StringBuilder();
    
        static Deque<Integer> deq = new LinkedList<>();
    
        static int N;
    
        public static void base() throws IOException {
            N = Integer.parseInt(br.readLine());
        }
    
        public static void main(String[] args) throws IOException {
            base();
    
            for(int i=0; i<N; i++) {
                String s = br.readLine();
                String[] s1 = s.split(" ");
    
                switch (s1[0]) {
                    case "push_front":
                        push_front(Integer.parseInt(s1[1]));
                        break;
                    case "push_back":
                        push_back(Integer.parseInt(s1[1]));
                        break;
                    case "pop_front":
                        pop_front();
                        break;
                    case "pop_back":
                        pop_back();
                        break;
                    case "size":
                        size();
                        break;
                    case "empty":
                        empty();
                        break;
                    case "front":
                        front();
                        break;
                    case "back":
                        back();
                        break;
                }
            }
            System.out.println(sb);
        }
    
        public static void push_front(int n) {
            deq.addFirst(n);
        }
    
        public static void push_back(int n) {
            deq.addLast(n);
        }
    
        public static void pop_front() {
            if(deq.size() > 0)
                sb.append(deq.removeFirst() + "\n");
            else
                sb.append("-1\n");
        }
    
        public static void pop_back() {
            if(deq.size() > 0)
                sb.append(deq.removeLast() + "\n");
            else
                sb.append("-1\n");
        }
    
        public static void size() {
            sb.append(deq.size() + "\n");
        }
    
        public static void empty() {
            if(deq.isEmpty())
                sb.append("1\n");
            else
                sb.append("0\n");
        }
    
        public static void front() {
            if(deq.size() > 0)
                sb.append(deq.getFirst() + "\n");
            else
                sb.append("-1\n");
        }
    
        public static void back() {
            if(deq.size() > 0)
                sb.append(deq.getLast() + "\n");
            else
                sb.append("-1\n");
        }
    }

    📌 説明する。

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayDeque;
    
    public class Main {
    
        static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
        static StringBuilder sb = new StringBuilder();
    
        static ArrayDeque<Integer> deq = new ArrayDeque<>();
    
        static int N;
    
        public static void base() throws IOException {
            N = Integer.parseInt(br.readLine());
        }
    
        public static void main(String[] args) throws IOException {
            base();
    
            for(int i=0; i<N; i++) {
                String s = br.readLine();
                String[] s1 = s.split(" ");
    
                switch (s1[0]) {
                    case "push_front":
                        push_front(Integer.parseInt(s1[1]));
                        break;
                    case "push_back":
                        push_back(Integer.parseInt(s1[1]));
                        break;
                    case "pop_front":
                        pop_front();
                        break;
                    case "pop_back":
                        pop_back();
                        break;
                    case "size":
                        size();
                        break;
                    case "empty":
                        empty();
                        break;
                    case "front":
                        front();
                        break;
                    case "back":
                        back();
                        break;
                }
            }
            System.out.println(sb);
        }
    
        public static void push_front(int n) {
            deq.addFirst(n);
        }
    
        public static void push_back(int n) {
            deq.addLast(n);
        }
    
        public static void pop_front() {
            if(deq.size() > 0)
                sb.append(deq.pollFirst() + "\n");
            else
                sb.append("-1\n");
        }
    
        public static void pop_back() {
            if(deq.size() > 0)
                sb.append(deq.pollLast() + "\n");
            else
                sb.append("-1\n");
        }
    
        public static void size() {
            sb.append(deq.size() + "\n");
        }
    
        public static void empty() {
            if(deq.isEmpty())
                sb.append("1\n");
            else
                sb.append("0\n");
        }
    
        public static void front() {
            if(deq.size() > 0)
                sb.append(deq.peekFirst() + "\n");
            else
                sb.append("-1\n");
        }
    
        public static void back() {
            if(deq.size() > 0)
                sb.append(deq.peekLast() + "\n");
            else
                sb.append("-1\n");
        }
    }