백준

[백준 9012번][Java][Stack] 괄호

dbssk 2023. 3. 20. 18:34

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

풀이

  • Stack과 출력을 위해 StringBuilder사용
  • append() - 문자열을 결합 해주는데 checkVps에서 return해주는 값과 줄바꿈을 합쳐서 문제에서 요구하는 출력 형식 완성
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

/*
    Stack - 백준 9012번
 */

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int n = Integer.parseInt(br.readLine());

        for (int i = 0; i < n; i++) {
            sb.append(checkVps(br.readLine())).append('\n');
        }

        System.out.println(sb);
    }

    public static String checkVps(String str) {
        boolean isVps = true;
        Stack<Character> stack = new Stack<>();

        for (char c : str.toCharArray()) {
            if (c == '(') {
                stack.push(c);
            } else if (stack.isEmpty()) {
                isVps = false;
                break;
            } else {
                stack.pop();
            }
        }

        if (isVps && stack.isEmpty()) {
            return "YES";
        } else {
            return "NO";
        }
    }
}