Algorithm/Baekjoon

λ°±μ€€ 1874 μŠ€νƒ μˆ˜μ—΄

do-oni 2021. 11. 30. 00:52

πŸ’»Q

 

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

 

 

πŸ’‘A


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

public 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 n = Integer.parseInt(br.readLine());
		int start = 0;  //μ˜€λ¦„μ°¨μˆœ μˆ˜μ—΄μ„ μœ„ν•œ λ³€μˆ˜
		
		
		while(n-- > 0) {
			int value = Integer.parseInt(br.readLine());
			
			if(value > start) {
				//1λΆ€ν„° valueκ°’κΉŒμ§€ μŠ€νƒμ— μ €μž₯
				for(int i = start + 1; i <= value; i++) {
					stack.push(i);
					sb.append('+').append('\n');  //pushν•  λ•Œ + μ €μž₯
				}
				start = value; 	//λ‹€μŒ push ν•  λ•Œμ˜ μ˜€λ¦„μ°¨μˆœμ„ μœ μ§€ν•˜κΈ° μœ„ν•œ λ³€μˆ˜ μ΄ˆκΈ°ν™” 
			}
			
			//맨 μœ„μ˜ 값이 λ‹€μŒ valueκ°’κ³Ό κ°™μ§€ μ•Šμ„ 경우
			else if(stack.peek() != value) {
				System.out.println("NO");
				System.exit(0);
			}
            
			stack.pop();
			sb.append('-').append('\n');  //popν•  λ•Œ - μ €μž₯
		}
		
		System.out.println(sb);
	}
}​