어제는 비염으로 컨디션이 너무 좋지 못해, 아무것도 하지 못했다.. 그래서 일찍 자고 새벽4시에 일어나서 공부를 했다. 문제는 중간에 너무 졸려서 또 잤다 ㅋㅋㅋ 패턴만 꼬인것 같다 ㅠㅠ
알고리즘
문제는 코드플러스 해설을 듣고나서 풀이를 해서 그렇게 큰 어려움은 없었다.
나중에도 풀 수 있을정도라면 성공한 셈인것 같다.
다른건 아니고 음.. BufferedWriter가 있어서 메모리 공간을 낭비 안하려고, StringBuilder를 사용하는 것을 지양하려 했다. 그런데 BufferedWrite의 write 메소드를 사용하고, 제출하니까출력초과
과 발생하여 어쩔 수 없이 SB를 사용하게 되었다..왜그럴까?
IDE에서는 잘 작동한다..ㅠㅠ
## 백준에서 출력초과
import java.io.*;
import java.util.*;
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));
Stack<Integer> stack = new Stack<>();
int cursor = 0; // 스택에 들어간 마지막 수
int testCaseNum = Integer.parseInt(br.readLine());
while (testCaseNum-- > 0) {
int inputSequence = Integer.parseInt(br.readLine()); // 입력된 수열
if(cursor < inputSequence){
while (cursor != inputSequence) {
stack.push(++cursor);
bw.append("+").append("\n");
}
}
if(cursor >= inputSequence) { //스택에 들어갔던 마지막 수가 입력된 수열보다 크거나 같을 경우
if(stack.pop()==inputSequence){
bw.append("-").append("\n");
}else{ // pop 을 할때마다 수열이 만들어지므로, 불가능한 경우
bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.append("NO");
break;
}
}
}
bw.flush();
}
}