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));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
Stack<Integer> stack = new Stack<>();
boolean flag = true;
int now = 1;
for(int i=0; i<n; i++) {
int target = Integer.parseInt(br.readLine());
if(now <= target) {
while(now <= target) {
stack.push(now++);
sb.append("+\n");
}
stack.pop();
sb.append("-\n");
} else {
if(stack.peek() > target) {
System.out.println("NO");
flag = false;
return;
} else {
stack.pop();
sb.append("-\n");
}
}
}
if(flag) System.out.println(sb);
br.close();
}
}
❌ 틀린 답안 - 출력 초과 ❌
BufferedWriter는 버퍼가 일정량 이상 차면 비정기적으로 flush가 된다.
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> stack = new Stack<>();
boolean flag = true;
int now = 1;
for(int i=0; i<n; i++) {
int target = Integer.parseInt(br.readLine());
if(now <= target) {
while(now <= target) {
stack.push(now++);
bw.write("+\n");
}
stack.pop();
bw.write("-\n");
} else {
if(stack.peek() > target) {
System.out.println("NO");
flag = false;
return;
} else {
stack.pop();
bw.write("-\n");
}
}
}
if(flag) bw.flush();
br.close();
bw.close();
}
}
'Coding Test > 백준' 카테고리의 다른 글
[백준/자바] 11286 - 절댓값 힙 (0) | 2023.06.04 |
---|---|
[백준/자바] 17298 - 오큰수 (0) | 2023.06.04 |
[백준/자바] 11003 - 최솟값 찾기 (0) | 2023.06.04 |
[백준/자바] 12891 - DNA 비밀번호 (0) | 2023.06.03 |
[백준/자바] 1253 - 좋다 (0) | 2023.06.03 |