코딩테스트 연습 스터디 진행중 입니다. ✍✍✍
Notion : https://www.notion.so/1c911ca6572e4513bd8ed091aa508d67
문제
https://www.acmicpc.net/problem/1874
[나의 풀이]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Stack;
public class Main {
    static Stack<Integer> makeStack(BufferedReader br) throws NumberFormatException, IOException {
        Stack<Integer> stack1 = new Stack<>();
        int N = Integer.parseInt(br.readLine());
        for (int i = N; i > 0; i--) {
            stack1.push(i);
        }
        return stack1;
    }
    static void getAns(Stack<Integer> stack1, BufferedReader br) throws NumberFormatException, IOException {
        StringBuilder sb = new StringBuilder();
        Stack<Integer> stack2 = new Stack<>();
        stack2.push(0);
        ArrayList list1 = new ArrayList<>();
        int n = stack1.size();
        int m;
        for (int i = 0; i < n; i++) {
            m = Integer.parseInt(br.readLine());
            list1.add(m);
        }
        int o = -1;
        for (int i = 0; i < n; i++) {
            o = (int) list1.get(i);
            while (!stack2.peek().equals(o)) {
                if (stack2.peek() > o) {
                    System.out.println("NO");
                    return;
                }
                stack2.push(stack1.pop());
                sb.append("+" + "\n");
            }
            stack2.pop();
            sb.append("-" + "\n");
        }
        System.out.println(sb.toString());
        return;
    }
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Stack<Integer> stack1 = makeStack(br);
        getAns(stack1, br);
    }
}
다른 풀이들과 약간 다르게 풀어보았습니다. 입력값들이 저장된 Stack을 하나 만든 뒤 다른 Stack으로 하나씩 push 하며 pop하는 방식입니다.
풀이 과정중 계속 런타임에러(Numberforamt)에러가 떠서 고생하였는데
그 이유는 BufferedReader/Writer를 두 개 이상 생성한 것이 이유였습니다. 🐷🐷🐷
또 출력초과 에러가 뜨기도 하였습니다. 이 경우는 BufferedWrite에 여러 번 write 했을 때 버퍼의 크기를 초과하면 자동으로 호출된 것이 이유였습니다. 그리하여 출력 시에는 StringBuilder를 활용하는 방식으로 해결하였습니다.
감사합니다.🐻🐻🐻