// 스택 수열
package Silver_II_2;
import java.io.*;
import java.util.Stack;
public class Ex1874 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int m; // 수열을 이루는 정수
int max = 0; // 스택의 최대 숫자
boolean flag = true; // NO를 출력할 지, 판별해 줄 flag
for (int i = 0; i < n; i++) {
m = Integer.parseInt(br.readLine());
if (max < m) {
for (int j = max + 1; j <= m; j++) {
push(j);
}
pop();
max = m;
} else if (max > m) {
if (!stack.isEmpty() && stack.peek() >= m) {
while (stack.peek() > m) {
pop();
}
pop();
} else {
flag = false; // NO
}
}
}
if (flag) {
System.out.print(sb);
} else {
System.out.println("NO");
}
}
static Stack<Integer> stack = new Stack<>();
static StringBuilder sb = new StringBuilder();
static void push(int num) {
stack.push(num);
sb.append("+").append("\n");
}
static void pop() {
stack.pop();
sb.append("-").append("\n");
}
}
이번 문제는 문제 이해가 힘들었다. 아래 영상에서 문제 설명을 보고 이해했다.
https://www.youtube.com/watch?v=byCxMbgzEVM&t=8s
문제를 풀때도 왜 틀렸는지 모를때가 많았는데 반례를 정리해 놓은 글이 있어서 참고해서 풀었다. 아래는 내가 참고한 반례 모음이다.
글 읽기 - 반례 모음
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
'백준 풀이 > 자바(Java)' 카테고리의 다른 글
백준 10953 자바 - A+B - 6 (0) | 2023.12.28 |
---|---|
백준 5086 자바 - 배수와 약수 (0) | 2023.12.28 |
백준 4949 자바 - 균형잡힌 세상 (1) | 2023.12.22 |
백준 12904 자바 - A와 B (1) | 2023.12.22 |
백준 11719 자바 - 그대로 출력하기 2 (0) | 2023.12.22 |