[백준] 1874 스택 수열 자바(Java)
본문 바로가기
알고리즘 풀이/백준

[백준] 1874 스택 수열 자바(Java)

by IYK2h 2023. 4. 9.
728x90

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

 

1874번: 스택 수열

1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.

www.acmicpc.net

 

풀이

  • 스택 활용

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;

public class Main {

    public static void main(String[] ar) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

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

        int n = Integer.parseInt(br.readLine());
        int val = 0;

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

            // 입력 받은값이 마지막값 보다 큰 경우
            if (input > val) {
                for (int i = val + 1; i <= input; i++) {
                    stack.push(i);
                    sb.append('+').append('\n');
                }
                val = input;
            }
            // 마지막 원소가 입력받은 값과 같이 않은 경우
            else if (stack.peek() != input) {
                System.out.println("NO");
                return;
            }

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

        System.out.println(sb);
    }
}

 

728x90

댓글