본문 바로가기

백준 알고리즘(Java)

1874번) 수열

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