[伯俊1874]スタック数列-JAVA



問題のソース


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

に答える


これは
  • スタックの問題です.
  • が入力した値がtopより大きい場合、スタックにプッシュされます.この場合、"+"はStringBuilderで追加されます.
  • スタックのtopが入力値と異なる場合、実現できない数列.「NO」を返します.
  • 入力
  • の値がtop以下の場合、Popを使用します.このとき"-"はStringBuilderで追加されます.
  • コード#コード#

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Stack;
    import java.util.StringTokenizer;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
    
            Stack<Integer> stack = new Stack<>();
            StringBuilder stringBuilder = new StringBuilder();
            int top = 0;
            int N = Integer.parseInt(stringTokenizer.nextToken());
            for (int i = 0; i < N; i++) {
                stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                int value = Integer.parseInt(stringTokenizer.nextToken());
                if (value > top) {
                    for (int j = top + 1; j <= value; j++) {
                        stack.push(j);
                        stringBuilder.append("+").append("\n");
                    }
                    top = value;
                } else if (stack.peek() != value) {
                    System.out.println("NO");
                    return;
                }
                stack.pop();
                stringBuilder.append("-").append("\n");
            }
            System.out.println(stringBuilder);
        }
    }

    採点結果