마커는 단일 시행(단일 경우)에 쌍으로 따라붙음
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
// ISC - L1
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
// L2 ~
int[] A = new int[N];
for (int i = 0; i < N; i++) {
A[i] = sc.nextInt();
}
Stack<Integer> stack = new Stack<>();
StringBuffer marker = new StringBuffer();
int num = 1;
boolean possibility = true;
for (int i = 0; i < A.length; i++) {
if (num <= A[i]) {
while (num <= A[i]) {
stack.push(num++);
marker.append("+\n");
}
stack.pop();
marker.append("-\n");
} else {
int n = stack.pop();
if (n > A[i]) {
System.out.println("NO");
possibility = false;
break;
} else {
marker.append("-\n");
}
}
}
if (possibility)
System.out.println(marker.toString());
}
}
'코테 기초' 카테고리의 다른 글
if 시행공간 (0) | 2022.12.06 |
---|---|
if ~ else : boolean 스위치를 만들어두고 사용 (0) | 2022.12.06 |
StringBuffer (0) | 2022.12.06 |
숫자 타입의 경우, value를 바로 사용하거나, 추가 변수에서 그 value에 부합하면 check하는 경우 (0) | 2022.12.06 |
DFS와 stack 등에서 인식 공간 (0) | 2022.12.06 |