[Java]伯俊10845号[Q]Java


白準10845号です.
https://www.acmicpc.net/problem/10845

質問する


整数を格納するキューを実装し、入力としてのコマンドを処理するプログラムを作成してください.
命令は全部で6条ある.
  • push X:整数Xをキューに入れる演算.
  • pop:キューの一番前の整数を除いて、その数値を出力します.キューに整数がない場合は、-1が出力されます.
  • size:出力キューの整数の個数.
  • NULL:キューがNULLの場合、1または0が出力されます.
  • front:出力キューの一番前の整数.キューに整数がない場合は、-1が出力されます.
  • back:出力キューの一番後ろの整数.キューに整数がない場合は、-1が出力されます.
  • 入力


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

    しゅつりょく


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

    入力例

    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

    考える


    これは、一般的なキュー構造とリンクリストのデータ構造の特徴の問題です.
    一つ一つの命令で解けばいい
    削除出力の挿入などのデフォルト機能を使用できます.

    TMI


    Pass

    コード#コード#

    import java.util.*;
    import java.io.*;
    
    public class Main {
    	static LinkedList<Integer> que = new LinkedList<>();
    	static StringBuilder sb = new StringBuilder();
    
    	public static void main(String[] args) throws Exception {
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		StringTokenizer st;
    
    		int N = Integer.parseInt(br.readLine());
    		String function = "";
    		int num = 0;
    
    		while(N --> 0) {
    			st = new StringTokenizer(br.readLine());
    
    			if(st.countTokens() > 1) {
    				function = st.nextToken();
    				num = Integer.parseInt(st.nextToken());
    				que.offer(num);
    			}
    			else {
    				function = st.nextToken();
    
    				if(function.startsWith("f")) {
    					front();
    				}
    				else if(function.startsWith("b")) {
    					back();
    				}
    				else if(function.startsWith("s")) {
    					sb.append(que.size()+"\n");
    				}
    				else if(function.startsWith("e")) {
    					empty();
    				}
    				else if(function.startsWith("p")) {
    					pop();
    				}
    			}
    		}
    
    		System.out.println(sb);
    	}
    
    	static void pop() {
    		if(que.isEmpty()) {
    			sb.append(-1+"\n");
    		}
    		else {
    			sb.append(que.poll()+"\n");
    		}
    	}
    
    	static void empty() {
    		if(que.isEmpty()) {
    			sb.append(1+"\n");
    		}
    		else {
    			sb.append(0+"\n");
    		}
    	}
    
    	static void front() {
    		if(que.isEmpty()) {
    			sb.append(-1+"\n");
    		}
    		else {
    			sb.append(que.peekFirst()+"\n");
    		}
    	}
    
    	static void back() {
    		if(que.isEmpty()) {
    			sb.append(-1+"\n");
    		}
    		else {
    			sb.append(que.peekLast()+"\n");
    		}
    	}
    
    }