BOJ 1874. 스택수열

less than 1 minute read

BOJ 1874. 스택 수열

image image

풀이

입력으로 4 3 6 8 7 5 2 1으로 주어졌을 때
먼저 1부터 시작하여 4까지 Stack에 순서대로 push(+)한다. image
​ 입력인 4가 되었을 때 Stack에서 pop(-)
또 다음 입력인 3이 되었을 때 Stack에서 pop(-)한다.
image
​ 다음 입력인 6이 될 때까지 Stack에 다시 push(+)
image ​ 입력인 6에 도달하였으니 pop(-)
image ​ 위와 같이 반복한다.

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

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        Stack<Integer> stack = new Stack<>();
        int total = Integer.parseInt(br.readLine());
        int i = 1;
        while (total-- > 0) {
            int input = Integer.parseInt(br.readLine());
            while (i <= input) {
                stack.push(i);
                sb.append("+\n");
                i++;
            }

            if (stack.peek() == input) {
                stack.pop();
                sb.append("-\n");
            } else {
                System.out.print("NO");
                return;
            }
        }
        System.out.println(sb);
        br.close();
        return;
    }
}

import java.lang.StringBuilder
import java.util.*

fun main() {
    val stack = Stack<Int>()
    val sb = StringBuilder()
    var i = 1;
    repeat(readLine()?.toInt() ?: return) {
        val input = readLine()!!.toInt()
        while (i <= input) {
            stack.push(i)
            sb.append("+\n")
            i++
        }
        if (stack.peek() == input) {
            stack.pop()
            sb.append("-\n")
        } else {
            print("NO")
            return
        }
    }
    println(sb)
    return
}

풀이 소스

github.com/beomjo/algorithm-study/blob/main/BOJ/java/1874.java github.com/beomjo/algorithm-study/blob/main/BOJ/kotlin/1874.kt