import java.io.*;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
Stack<Integer> inputStk = new Stack<>();
int start = 0;
while (N --> 0) {
int value = Integer.parseInt(br.readLine());
if (value > start) {
for (int i = start + 1; i <= value; i++) {
inputStk.push(i);
bw.write("+" + "\n");
}
start = value;
} else if (inputStk.peek() != value) {
System.out.println("NO");
return;
}
inputStk.pop();
bw.write("-" + "\n");
}
bw.flush();
bw.close();
}
}
BufferWriter 사용 시 버퍼에 일정량이 쌓이면 비정기적으로 flush가 진행 → 출력초과
https://www.acmicpc.net/board/view/118796
글 읽기 - 이 문제는 BufferedWriter을 사용하면 안되나요? => 맞나보네요
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
import java.io.*;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
Stack<Integer> inputStk = new Stack<>();
int start = 0;
while (N-- > 0) {
int value = Integer.parseInt(br.readLine());
if (value > start) {
for (int i = start + 1; i <= value; i++) {
inputStk.push(i);
sb.append("+" + "\n");
}
start = value;
} else if (inputStk.peek() != value) {
System.out.println("NO");
return;
}
inputStk.pop();
sb.append("-" + "\n");
}
System.out.println(sb);
}
}
'Algorithm' 카테고리의 다른 글
백준 7662번 :: 이중 우선순위 큐 (0) | 2023.07.27 |
---|---|
백준 1918번 :: 후위 표기식 (0) | 2023.07.21 |
백준 2750번 :: 수 정렬하기 (0) | 2023.07.06 |
백준 1181번 :: 단어 정렬 (0) | 2023.07.06 |
백준 10816번 :: 숫자 카드 2 (0) | 2023.06.23 |