알고리즘/백준

1874번 스택 수열 [스택] JAVA

보우움 2022. 5. 23. 08:03

import java.util.Scanner;
import java.util.Stack;

public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();

        Stack<Integer> stack = new Stack<>();

        int N = in.nextInt();

        int start = 0;

        // N 번 반복
        while(N -- > 0) {

            int value = in.nextInt();

            if(value > start) {
                for(int i = start + 1; i <= value; i++) {
                    stack.push(i);
                    sb.append('+').append('\n');
                }
                start = value;
            }

            else if(stack.peek() != value) {
                System.out.println("NO");
                return;
            }

            stack.pop();
            sb.append('-').append('\n');

        }

        System.out.println(sb);
    }
}

 

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