본문 바로가기
프로그래밍/알고리즘 풀이

[알고리즘] 백준 1874번: 스택 수열 JAVA

by 방구석개발자 2021. 4. 12.
반응형

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

public class Main {

    public static void main(String[] args) throws Exception {
        int N = 0;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        boolean resultBool=true;
        N = Integer.parseInt(br.readLine());
        Stack<Integer> stack =new Stack<Integer>();
        Stack<Integer> resultStack =new Stack<Integer>();
        StringBuilder sb = new StringBuilder();

        for(int i=N;i>0;i--){
            stack.push(i);
        } //여기 까지 초기값 세팅
        for(int i=0;i<N;i++) {
            int init = Integer.parseInt(br.readLine());
            while (!stack.isEmpty()&&stack.peek() <= init){
                resultStack.push(stack.pop());
                sb.append("+\n");
            }

            if(resultStack.peek() == init) {
                sb.append("-\n");
                resultStack.pop();
            }else{
                resultBool=false;
                break;
            }

        }
        if(resultBool)
            System.out.print(sb);
        else System.out.print("NO");
    }
}

입력 받은 값을 스택에 넣었고 결과 스택에 추가하여 수열을 만들었습니다.

원하는 결과값을 얻을 수 없을 때는 boolean값으로 제어하여 NO를 출력하도록 하였습니다.

반응형

댓글