[Baekjoon]10828号(SILVER IV):スタック(Java)
1. Problem 📃
[スタック]
https://www.acmicpc.net/problem/10828
[質問]
整数を格納するスタックを実装し、入力としてのコマンドを処理するプログラムを作成します.
命令は全部で5種類ある. push X:整数Xをスタックに入れる演算. pop:スタックの最上位の整数を除去し、出力します.スタックに整数がない場合は、-1が出力されます. size:出力スタック内の整数の個数. empty:スタックが空の場合、1または0が出力されます. top:出力スタックの一番上の整数.スタックに整数がない場合は、-1が出力されます. 2. Input ⌨️
[入力]
1行目に与えられるコマンド数N(1≦N≦10000).
2行目からN行目までそれぞれ1つのコマンドがあります.
与えられた整数は1以上であり、100000以下である.
問題にない命令はない.
3. Output 🖨
[出力]
出力するコマンドが発行されるたびに、各行に1つのコマンドが出力されます.
4. Example 📚
[IO例]
例入力例出力14 push 1 push 2 topsizem ptypopsizem ptypopush 3 emptypopush 2201-101-1037 poptopush 123 topopopopopopopopopop p p-1-123-11-1
5. Solution 🔑
問題に示すように,push,pop,size,menull,topを方法として問題を実現し,解決する.
1.静的表示寸法を管理する変数(size)と値の配列変数(stack)を宣言します.
2.pushは入力値をスタックに入れるコマンドです.
配列変数スタックに値を配置し、挿入するインデックスがsize値に配置されます.
その後sizeを++に増やします.
3.popはスタックから値を減算するコマンドです.
popの配列スタックに値がない場合(size=0)、-1を返します.
値がある場合は、stackのsize-1値を変数(n)に配置し、stackのsize-1値を0(任意の値)に変更します.次にsize--(減少)をnに戻します.
4.sizeはスタックの長さを表すコマンドです.
変数size値をそのまま返してください.
5.空はスタックに値があるかどうかを判断するコマンドです.
変数size値が0(空)の場合、1を返します.そうでない場合、0を返します.
6.topは、スタックの上部の値を出力するコマンドです.
配列スタックに値がない場合(size==0)、-1を返します.そうでない場合、スタック内のsize-1インデックスの値を返します.
7.マスターメソッドは、変数(N)を宣言することによって数回の文を入力します.
すべてのコマンドがpushの場合、値はNになります.したがって、静的に宣言されたstack配列変数はNに指定されます.
8.次に、Nのコマンドを受信すると、switch文を使用して該当する値を呼び出す方法を使用し、StringBuilde(sb)に戻り値を入れて開きます.最終的なStringBuilder(sb)をN回出力します.
6. Code 💻
[スタック]
https://www.acmicpc.net/problem/10828
[質問]
整数を格納するスタックを実装し、入力としてのコマンドを処理するプログラムを作成します.
命令は全部で5種類ある.
[入力]
1行目に与えられるコマンド数N(1≦N≦10000).
2行目からN行目までそれぞれ1つのコマンドがあります.
与えられた整数は1以上であり、100000以下である.
問題にない命令はない.
3. Output 🖨
[出力]
出力するコマンドが発行されるたびに、各行に1つのコマンドが出力されます.
4. Example 📚
[IO例]
例入力例出力14 push 1 push 2 topsizem ptypopsizem ptypopush 3 emptypopush 2201-101-1037 poptopush 123 topopopopopopopopopop p p-1-123-11-1
5. Solution 🔑
問題に示すように,push,pop,size,menull,topを方法として問題を実現し,解決する.
1.静的表示寸法を管理する変数(size)と値の配列変数(stack)を宣言します.
2.pushは入力値をスタックに入れるコマンドです.
配列変数スタックに値を配置し、挿入するインデックスがsize値に配置されます.
その後sizeを++に増やします.
3.popはスタックから値を減算するコマンドです.
popの配列スタックに値がない場合(size=0)、-1を返します.
値がある場合は、stackのsize-1値を変数(n)に配置し、stackのsize-1値を0(任意の値)に変更します.次にsize--(減少)をnに戻します.
4.sizeはスタックの長さを表すコマンドです.
変数size値をそのまま返してください.
5.空はスタックに値があるかどうかを判断するコマンドです.
変数size値が0(空)の場合、1を返します.そうでない場合、0を返します.
6.topは、スタックの上部の値を出力するコマンドです.
配列スタックに値がない場合(size==0)、-1を返します.そうでない場合、スタック内のsize-1インデックスの値を返します.
7.マスターメソッドは、変数(N)を宣言することによって数回の文を入力します.
すべてのコマンドがpushの場合、値はNになります.したがって、静的に宣言されたstack配列変数はNに指定されます.
8.次に、Nのコマンドを受信すると、switch文を使用して該当する値を呼び出す方法を使用し、StringBuilde(sb)に戻り値を入れて開きます.最終的なStringBuilder(sb)をN回出力します.
6. Code 💻
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int size = 0;
static int[] stack;
public static void push(int val) {
stack[size] = val;
size++;
}
public static int pop() {
if(size == 0) {
return -1;
}
else {
int n = stack[size-1];
stack[size-1] = 0;
size--;
return n;
}
}
public static int size() {
return size;
}
public static int empty() {
if(size == 0 ) {
return 1;
}
else {
return 0;
}
}
public static int top() {
if(size == 0) {
return -1;
}
else {
return stack[size - 1];
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(st.nextToken());
stack = new int[N];
for(int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine(), " ");
switch(st.nextToken()) {
case "push" :
push(Integer.parseInt(st.nextToken()));
break;
case "pop" :
sb.append(pop()).append("\n");
break;
case "size" :
sb.append(size()).append("\n");
break;
case "empty" :
sb.append(empty()).append("\n");
break;
case "top" :
sb.append(top()).append("\n");
break;
}
}
System.out.println(sb);
}
}
Reference
この問題について([Baekjoon]10828号(SILVER IV):スタック(Java)), 我々は、より多くの情報をここで見つけました https://velog.io/@tpdlqj0514/Baekjoon-10828번-SILVER-IV-스택-Javaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol