Post Page Advertisement [Top]

この問題はこのURLを翻訳したものです。


問題 - クュ(Queue)


EnqueueがQueueです。FIFO(First in First out)の形式を取ります


整数を格納するキューを実装し、与えられるコマンドを処理するプログラムを作成してください。

コマンドは、下の計6つです。

push X:整数Xをキューに入れます。

pop:キューで一番前にある整数を抜き、その数を出力します。
もしキューに入っている整数がない場合には、-1を出力します。

size:キューに入っている整数の数を出力します。

empty:キューが空の場合1、そうではない場合は0を出力します。

front:キューの最も前にある整数を出力します。
もしキューに入っている整数がない場合には、-1を出力します。

back:キューの最も後ろにある整数を出力します。
もしキューに入っている整数がない場合には、-1を出力します。

入力

最初の行に与えられるコマンドの数N(1≤N≤10,000)が与えられます。二行目からN個の行までは、コマンドが一つずつ与えられます。与えられる整数は、1以上で100,000よりも小さいか、同じです。問題に記載されていないコマンドが与えられることはありません。


 例の入力例の出力 
 15
push 1
push 2
front
back
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
front
1
2
2
0
1
2
-1
0
1
-1
0
3



下は私の答案です。

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.StringTokenizer;

public class algo {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int num = sc.nextInt();
        Queue<Integer> q = new LinkedList<>();

        int i = 0;
        sc.nextLine();

        while (i < num) {

            String comand = sc.nextLine();
            StringTokenizer st = new StringTokenizer(comand, " ");
            String firstHalf = st.nextToken();
            String secondHalf = "";
            if(st.hasMoreElements()) {
                secondHalf= st.nextToken();
            }

            switch (firstHalf) {
                case "push":
                    q.add(Integer.parseInt(secondHalf));
                    break;
                case "pop":
                    System.out.println(q.isEmpty() ? -1 : q.poll());
                    break;
                case "size":
                    System.out.println(q.size());
                    break;
                case "empty":
                    System.out.println(q.isEmpty() ? 1 : 0);
                    break;
                case "front":
                    if(q.isEmpty()){
                        System.out.println("-1");
                    } else {
                        System.out.println(((LinkedList<Integer>) q).getFirst());
                    }
                    break;
                case "back":
                    if(q.isEmpty()){
                        System.out.println("-1");
                    } else {
                        System.out.println(((LinkedList<Integer>) q).getLast());
                    }
                    break;
                default:
                    System.out.println("Error");
                    break;
            }
            i++;
        }
    }
}

最初は自分でキューを作ってみるつもりだったんですが

時間が掛かりすぎて途中に変えました。

時間がある時、やってみたいと思います。

10845正しいです!!メモリ : 44316 KB所要時間 : 460 MS

댓글 없음:

댓글 쓰기

Bottom Ad [Post Page]

| Designed by Colorlib