import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = Integer.parseInt(scanner.next());
int[] arr = new int[n];
Stack<Integer> stack = new Stack<>();
StringBuilder result = new StringBuilder();
for (int i = 0; i < n; i ++)
arr[i] = Integer.parseInt(scanner.next());
int j = 0;
for (int i = 0; i < n; i++) {
stack.add(i + 1);
result.append(i == 0 ? "+" : "\n+");
while(!stack.isEmpty() && stack.peek() == arr[j]) {
stack.pop();
result.append("\n-");
j++;
}
}
if (stack.isEmpty())
System.out.print(result);
else
System.out.println("NO");
}
}
고생한 부분..
- stack == null 과 stack.isEmpty()는 다름... (스택은 초기화는 되었으니 null은 아니다. 컬렉션 다룰때마다 헷갈림)
while(!stack.isEmpty() && stack.peek() == arr[j])
cf) &와 &&의 차이를 알 수 있다.
&를 사용하면 익셉션 발생(&&는 앞 논리의 결과에 따라 뒷 논리 수행여부를 다르게 해주므로..)
--> 여러 논리식을 나열할 때, 순서에 신경써보자.
'백준 알고리즘(Java)' 카테고리의 다른 글
9012번) 괄호 (0) | 2018.12.15 |
---|---|
1929번) 소수 구하기 (0) | 2018.09.28 |
10828번) 스택 (0) | 2018.08.30 |
1978번) 소수 찾기 (0) | 2018.08.20 |
1181번) 단어 정렬 (0) | 2018.08.20 |