dev.Log

스택 P1874 본문

알고리즘

스택 P1874

초코푸딩 2022. 9. 12. 17:31
package acmicpc;

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

public class P1874 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int N = scan.nextInt();
        int[] A = new int[N];
        for(int i=0; i<N; i++) {
            A[i] = scan.nextInt();
        }
        Stack<Integer> stack = new Stack<>();
        StringBuffer bf = new StringBuffer();
        int num = 1;
        boolean result = true;
        for(int i=0; i<A.length; i++) {
            int su = A[i];
            if(su >= num) { //현재 수열값 >= 오른차순 자연수 : 값이 같아질때까지 push
              while(su >= num) {
                stack.push(num++);
                bf.append("+\n");
              }
              stack.pop();
              bf.append("-\n");
            } else { //현재 수열값 < 오름차순 자연수 : pop()을 수행해 수열 원소를 꺼냄
                int n = stack.pop();
                if(n > su) { 
                    System.out.println("NO");
                    result = false;
                    break;
                } else {
                    bf.append("-\n");
                }
            }
        } //for
        if(result) System.out.println(bf.toString());
    }
}

'알고리즘' 카테고리의 다른 글

2164 큐  (0) 2022.09.13
17298 스택  (0) 2022.09.13
Deque<Node> deque = new LinkedList<>();  (0) 2022.09.12
1253 투포인터  (0) 2022.09.08
2018 연속합  (0) 2022.09.05
Comments