Jun's Development Journey

[BOJ] 9012 괄호 본문

BOJ/String

[BOJ] 9012 괄호

J_Jayce 2021. 2. 16. 18:52

문제

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.*;

public class Main {
	
	public static boolean chk_vps(String par) {
		boolean chk = true;
		int idx=0, len = par.length();
		Stack<Character> stack = new Stack<Character>();
		
		while(idx!=len) {
			if(par.charAt(idx)=='(')
				stack.push(par.charAt(idx));
			else if(stack.empty()) {
				//문자열을 다 돌기전에 스택이 빈다면, ')'가 더 많은 것이다.
				chk = false;
				break;
			}
			else
				stack.pop();
			idx++;
		} 
		if(!stack.empty())//문자열을 다 돌고도 스택이 안비었다면 '('이 더 많은것이다.
			chk = false;
		return chk;
	}
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		int N = Integer.parseInt(br.readLine());
		String[] par = new String[N];
		
		//입력
		for(int i=0;i<N;i++) 
			par[i] = new String(br.readLine());
		
		//계산
		for(int i=0;i<N;i++) {
			if(chk_vps(par[i]))
				System.out.println("YES");
			else
				System.out.println("NO");
		}
	}

}