알고리즘

[백준/Java] 9012 : 괄호

Stitchhhh 2025. 2. 16. 22:47

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

 

문자열을 끊어 받으면서 단순하게 '(' 가 들어오면 stack에 push해주고 ')' 가 들어오면 stack에 pop을 해주는데 stack이 비워져 있으면 'NO' 출력 후 반복문을 종료하면 된다.

 

반복문이 끝까지 돌았을 경우에는 stack의 사이즈를 가져와 0이면 'YES' 0이 아니면 '('가 ')' 보다 많은 경우 이기 때문에 'NO' 출력을 하면 된다.

 

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

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

		for (int i = 0; i < TC; i++) {
			String str = br.readLine();
			String ans = "YES";
			Stack<Character> stack = new Stack<>();

			for (int j = 0; j < str.length(); j++) {
				char tmp = str.charAt(j);

				if (tmp == '(') {
					stack.push('(');
					continue;
				}
				if (tmp == ')' && !stack.isEmpty()) {
					stack.pop();
					continue;
				}
				if (tmp == ')' && stack.isEmpty()) {
					ans = "NO";
					break;
				}
			}
			System.out.println(stack.size() == 0 ? ans : "NO");
		}
		br.close();
	}
}