반응형

📖 문제

 

📋 코드

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

 

반응형

'🧩PS > 🥈Nomal' 카테고리의 다른 글

[JAVA] 백준 18258번 - 큐 2  (0) 2021.12.07
[JAVA] 백준 17298번 - 오큰수  (0) 2021.12.06
[JAVA] 백준 2004번 - 조합 0의 개수  (0) 2021.11.23
[JAVA] 백준 2981번 - 검문  (0) 2021.11.17
[JAVA] 백준 11780번 - 플로이드 2  (0) 2021.11.03

+ Recent posts