반응형

 

public class Q_1874 {
    public static void main(String[] args) {

        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder stringBuilder = new StringBuilder();
        Stack<Integer> stack = new Stack<>();
        int top = 0; //스택이 들어간 마지막

        try {
            String sequenceLength = bufferedReader.readLine();

            for(int i = 0; i < Integer.parseInt(sequenceLength); i++) {
                String number = bufferedReader.readLine(); //스택에 추가되어야 하는 수

                if(Integer.parseInt(number) > top) { //추가되어야 하는 수가 스택의 마지막 보다 큰 경우
                    while(Integer.parseInt(number) > top) {
                        stack.push(++top);
                        stringBuilder.append("+");
                        stringBuilder.append(System.lineSeparator());
                    }
                    stack.pop();
                    stringBuilder.append("-");
                    stringBuilder.append(System.lineSeparator());
                }else { //추가되어야 하는 수가 스택의 마지막 보다 작은 경우
                    if(!stack.isEmpty()) {
                        Integer pop = stack.pop();
                        if(Integer.parseInt(number) == pop) {
                            stringBuilder.append("-");
                            stringBuilder.append(System.lineSeparator());
                        }else {
                            stringBuilder.setLength(0);
                            stringBuilder.append("NO");
                            break;
                        }
                    }
                }
            }
            System.out.println(stringBuilder);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

URL :  https://www.acmicpc.net/problem/1874

반응형

+ Recent posts