T_era

[JAVA] 백준 4949 : 균형잡힌세상 본문

Programing/BaekJoon

[JAVA] 백준 4949 : 균형잡힌세상

블스뜸 2025. 4. 1. 16:49

자꾸 틀렸데서 거의 1시간넘게 왜틀렸지하면서 고민했는데
출력을 대문자로해서 틀리고있었다...
소문자로 바꾸니 바로 정답 그냥 억울하다

import java.io.*;

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));
        String str = "";
        while (!((str = br.readLine()).equals("."))) {
            NodeManager<Character> nodeManager = new NodeManager<>();
            boolean flag = false;

            for (char c : str.toCharArray()) {
                switch (c) {
                    case '(':
                    case '[': {
                        nodeManager.push(new StackNode<>(c));
                        break;
                    }
                    case ')': {
                        Character item = nodeManager.pop();
                        if(item == null){
                            flag = true;
                        }else if(item == '['){
                            flag = true;
                        }
                        break;
                    }
                    case ']': {
                        Character item = nodeManager.pop();
                        if(item == null){
                            flag = true;
                        }else if(item == '('){
                            flag = true;
                        }
                        break;
                    }
                    default: {
                    }

                }
                if(flag) break;
            }

            if(flag){
                bw.write("no" + "\n");
            }else if(nodeManager.isEmpty()){
                bw.write("yes" + "\n");
            }else if(!nodeManager.isEmpty()){
                bw.write("no" + "\n");
            }

        }


        br.close();
        bw.flush();
        bw.close();
    }
}

class StackNode<T> {
    StackNode<T> underNode;
    T value;

    public StackNode(T value) {
        this.value = value;
        underNode = null;
    }

    public T getValue() {
        return value;
    }

    public StackNode<T> getUnderNode() {
        return underNode;
    }

    public void setUnderNode(StackNode<T> underNode) {
        this.underNode = underNode;
    }
}

class NodeManager<T> {
    int size;
    StackNode<T> top;

    public NodeManager() {
        size = 0;
        top = null;
    }

    public int getSize() {
        return size;
    }

    public boolean isEmpty() {
        return top == null;
    }

    public void push(StackNode<T> node) {
        if (isEmpty()) {
            top = node;
        } else {
            node.setUnderNode(top);
            top = node;
        }
        size++;
    }

    public T pop() {
        StackNode<T> node = top;
        if (isEmpty()) return null;
        else if (top.getUnderNode() == null) {
            top = null;
        } else {
            top = top.getUnderNode();
        }
        size--;
        return node.getValue();
    }
}

'Programing > BaekJoon' 카테고리의 다른 글

[JAVA] 백준 2750 : 수 정렬하기  (0) 2025.04.02
[JAVA] 백준 17298 : 오큰수  (0) 2025.04.01
[JAVA] 백준 9012 : 괄호  (0) 2025.04.01
[JAVA] 백준 1874 : 스택 수열  (0) 2025.03.31
[JAVA] 백준 10828 : 스택  (0) 2025.03.31