🧩PS/🥈Nomal

[JAVA] 백준 1874번 - 스택 수열

Cocoon_ 2021. 11. 29. 11:30
반응형

📖 문제

 

📋 코드

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		StringBuffer sb = new StringBuffer();
		int N = sc.nextInt();
		int seq[] = new int[N];
		Stack<Integer> stack = new Stack<>();
		Stack<Integer> num = new Stack<>();
		
		for (int i = 0; i < N; i++) {
			seq[i] = sc.nextInt();
		}
		for (int i = N; i >= 1; i--) {
			num.push(i);
		}
		
		int now = 0;
		while (!num.isEmpty()) {
			stack.push(num.peek());
			sb.append("+\n");
			num.pop();
			
			while(true) {
				if(!stack.isEmpty() && stack.peek() == seq[now]) {
					stack.pop();
					now++;
					sb.append("-\n");
				}
				else break;
			}
		}
		if(stack.isEmpty()) {
			System.out.println(sb);
		}else {
			System.out.println("NO");
		}
	}
}

👨🏻‍💻 결과

 

 

📕 풀이 방법

num: stack에 오름차순으로 수를 push해주기 위한 스택

now: 입력 수열의 인덱스

 

"NO" 가 나오는 입력 케이스

4
1
4
2
3

 

 

🔗 링크

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

 

반응형