본문 바로가기
컴퓨터 공학/백준

[백준] JAVA 자바 : 괄호 검사 (9012번)

by kim-dev 2024. 1. 18.
반응형

괄호가 짝이 맞는지 안 맞는지 검사하는 코드이다.

사실 이건 굉장히 간단한 게… 스택을 이용해서 ‘(‘가 들어오면 모두 스택에 넣고 ‘(‘가 들어오면 스택에 ‘(‘가 있는지만 검사하면 된다.

 

import java.util.Scanner;
import java.util.Stack;

public class CheckBracket_9012 {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int T = scan.nextInt();
        scan.nextLine();
        Stack<Integer> stack = new Stack<>();
        boolean ans; // VPS인지 아닌지를 가르쳐 준다.
        
        String str;
        
        for (int i=0; i<T; i++) {
            stack.clear();
            ans = true; // ans를 처음에는 true로 설정.
            
            str = scan.nextLine();
            for (int j=0; j<str.length(); j++) {
                if (str.charAt(j) == '(') { // '('이라면
                    stack.push((int)str.charAt(j)); // 스택에 넣는다.
                } else { // ')'이라면
                    if (stack.empty()) { // 스택에 비어있다면
                        ans = false; // VPS가 아님. (짝이 안 맞으므로)
                        break;
                    } else { // 스택에 '('가 있을 경우
                        stack.pop();
                    }
                }
            }
            
            if (!stack.empty()) { // 한 줄을 다 돌았는데 스택에 '('가 남아 있다면?
                ans = false; // VPS가 아님.
            }
            System.out.println(ans ? "YES" : "NO");
        }
        
    }

}