평범한 연구소

[백준] 1874번: 스택 수열 (JAVA) 본문

JAVA/알고리즘 공부

[백준] 1874번: 스택 수열 (JAVA)

soyeonisgood 2022. 11. 19. 14:04

 

문제 설명이 친절하지 않다 ^-^ 출력 예제를 보고 문제를 해석해보자.

  • 주어진 수열과 "-" 된 숫자가 같아야한다.
  • 오름차순을 지켜야하므로 이전 입력값을 기억할 int 변수가 필요하다.

 

package boj;

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

public class Ex1874 {	
	public static void main(String[] args) {
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			StringBuffer sb = new StringBuffer();
			Stack<Integer> s = new Stack<>();
			
			int cnt = Integer.parseInt(br.readLine());
			int start = 0; // 이전 입력값 
			boolean b = true;
			
			while(cnt-- > 0) {
				int num = Integer.parseInt(br.readLine());
				
				if(num>start) {
					for(int i=start+1; i<=num; i++) {
						s.push(i);
						sb.append("+ \n");
					}
					start = num;
				
				} else if(s.peek()!=num) {  
					b = false;
					break;
				}
				
				s.pop();
				sb.append("- \n");
			}
			
			if(b) {
				System.out.println(sb);
			} else {
				System.out.println("NO");
			}
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}