dev.Log
스택 P1874 본문
package acmicpc;
import java.util.Scanner;
import java.util.Stack;
public class P1874 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
int[] A = new int[N];
for(int i=0; i<N; i++) {
A[i] = scan.nextInt();
}
Stack<Integer> stack = new Stack<>();
StringBuffer bf = new StringBuffer();
int num = 1;
boolean result = true;
for(int i=0; i<A.length; i++) {
int su = A[i];
if(su >= num) { //현재 수열값 >= 오른차순 자연수 : 값이 같아질때까지 push
while(su >= num) {
stack.push(num++);
bf.append("+\n");
}
stack.pop();
bf.append("-\n");
} else { //현재 수열값 < 오름차순 자연수 : pop()을 수행해 수열 원소를 꺼냄
int n = stack.pop();
if(n > su) {
System.out.println("NO");
result = false;
break;
} else {
bf.append("-\n");
}
}
} //for
if(result) System.out.println(bf.toString());
}
}
Comments