알고리즘/백준

[백준] 9012번 괄호 - Java[스택]

Chung-A 2021. 6. 9. 09:10

[백준] 9012번 괄호 - Java

 

문제 출처

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

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 


 풀이

스택을 이용해서 가장 최근에 열었던 괄호를 닫았는지 검사해주면 풀 수 있는 문제이다.

 


 소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

public class Main {

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

        while (n > 0) {
            String data = br.readLine();
            Stack<Character> stack = new Stack<>();

            boolean finish = false;
            for (int i = 0; i < data.length(); i++) {
                char c = data.charAt(i);

                if (c == '(') {
                    stack.push(c);
                } else {
                    if (stack.empty()) {
                        finish = true;
                        break;
                    } else {
                        stack.pop();
                    }
                }
            }

            if (!stack.empty() || finish) {
                System.out.println("NO");
            }
            else{
                System.out.println("YES");
            }

            n--;
        }
    }
}