Algorithm

자료구조 / 백준 1874 스택 수열

Dear-J 2025. 4. 1. 04:28

 

풀이

import java.io.*;
import java.util.Stack;

public class S1874 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int N = Integer.parseInt(br.readLine());
        Stack<Integer> stack = new Stack<>();

        int top = 0;    //stack 가장 위에 있는 값

        while (N > 0) {
            int n = Integer.parseInt(br.readLine());

            if (n > top) {
                for (int i = top + 1; i <= n; i++) {
                    stack.push(i);
                    sb.append('+').append('\n');
                }
                top = n;
            } else if (stack.peek() != n) {
                System.out.println("NO");
                return;
            }
            stack.pop();
            sb.append('-').append('\n');
            N--;
        }
        System.out.println(sb);
    }
}

 

둘째 줄 부터 1이상 N이하의 정수가 중복되지 않는 수열 만들기

 

예외

>> 입력 수열을 만들기 위한 pop을 진행할 때 원하는 값이 stack의 가장 위에 있지 않음 "NO"

'Algorithm' 카테고리의 다른 글

자료구조 / 백준 10845 큐  (0) 2025.04.03
자료구조 / 백준 1406 에디터  (0) 2025.04.02
자료구조 / 백준 9012 괄호  (0) 2025.03.31
자료구조 / 백준 9093 단어 뒤집기  (0) 2025.03.30
자료구조 / 백준 10828 스택  (0) 2025.03.20