본문 바로가기

ALGORITHM

백준 9012 괄호 (Java)

1. 문제 링크

 

9012번: 괄호

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

www.acmicpc.net

 

2. 문제 및 입출력예제

 

3. 문제 풀이

큐를 이용해 여는 괄호가 나오면 큐에 넣고, 닫는 괄호가 나오면 큐에서 꺼낸다.

큐에서 꺼낼 때 큐가 비어있거나, 모든 문자열이 끝났는데 큐에 남아 있다면 VPS가 아니다.

 

4. 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Queue;

public class Main {
	static char[][] map;
	static int min;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		int T = Integer.parseInt(br.readLine());
		for(int t=0;t<T;t++) {
			String str = br.readLine();
			String result = "YES";
			Queue<Character> queue = new ArrayDeque<>();
			for(int i=0;i<str.length();i++) {
				if(str.charAt(i)=='(') {
					queue.offer('(');
				}
				else {
					if(queue.isEmpty()) {
						result = "NO";
						break;
					}
					queue.poll();
				}
			}
			if(!queue.isEmpty()) {
				result = "NO";
			}
			sb.append(result).append("\n");
		}
		System.out.println(sb);		
	}	
}