반응형
public class Q_9012 {
    public static void main(String[] args) {
        Stack<String> stack = new Stack<>();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

        try {
            //입력 데이터 갯수
            String count = bufferedReader.readLine();

            for (int i = 0; i < Integer.parseInt(count); i++) {
                int psLeft = 0;
                int psRight = 0;
                String psLine = bufferedReader.readLine();

                //입력받은 괄호 문자열 라인 분해
                for (int j = 0; j < psLine.length(); j++) {
                    stack.push(psLine.substring(j, j+1));
                }
                //닫힌 괄호가 더 많은 경우, 괄호 쌍 미일치(VPS가 아닌 문자열)
                while(!stack.isEmpty()) {
                    String ps = stack.pop();

                    if(ps.equals("(")) {
                        ++psLeft;
                    }else if(ps.equals(")")) {
                        ++psRight;
                    }
                    if(psRight - psLeft < 0) {
                        stack.clear();//스택 데이터 초기화
                        break;
                    }
                }

                if (psRight - psLeft == 0) {//괄호 쌍 일치
                    System.out.println("YES");
                } else {//열린 괄호 또는 닫힌 괄호가 더 많은 경우, 괄호 쌍 미일치
                    System.out.println("NO");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

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

반응형

+ Recent posts