난이도: 실버 3
풀이: Java가 제공하는 유틸 중 하나인 Stack을 사용하여 푸는 문제이다. 그리고 Stack이 pop, push 작업을 반복할 때마다 StringBuffer에 저장할 수 있도록 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | import java.util.*; public class Q1874 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); int A[] = new int[N]; for (int i = 0; i < N; i ++) { A[i] = scanner.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 S = A[i]; if (S >= num){ while (S >= num) { stack.push(num ++); bf.append("+\n"); } stack.pop(); bf.append("-\n"); } else { int n = stack.pop(); if (n > S) { System.out.println("NO"); result = false; break; } else { bf.append("-\n"); } } } if (result) { System.out.println(bf.toString()); } } } | cs |
'Algorithm (Java) > Data structure' 카테고리의 다른 글
配列とリスト: スタックとキュー (0) | 2023.11.16 |
---|---|
배열과 리스트: 최솟값 찾기 (백준 11003) (0) | 2023.11.15 |
배열과 리스트: DNA 비밀번호 (백준 12891) (0) | 2023.11.15 |
配列とリスト: スライディングウィンドウ (0) | 2023.11.15 |
배열과 리스트: '좋은 수' 구하기 (백준 1253) (0) | 2023.11.15 |