본문 바로가기
백준

[자바 :: 백준 9012 괄호 ]

by javaman 2022. 8. 6.

문제 풀이 시나리오

 

1. '('가 나오면 스택에 저장
2. ')'가 나오면 스택 pop
3. 이때 스택이 비어있거나
4. 마지막에 스택에 '('이 남아 있으면 isValid = false

 

문제

풀이

package baekjoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

class Stack{
	List<Character> _stack = new ArrayList<Character>();
	void push(Character c) {
		_stack.add(c);
	}
	int pop() {
		int last = _stack.size()-1;
		if (last == -1)
			return -1;
		return _stack.remove(last);
	}
	int isEmpty() {
		return _stack.size()==0? 1:0;
	}
}

public class Main {
	//flag 만들기
	static boolean isValid = true;
	
	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++) 
		{
		
			Stack stack = new Stack();
			
			char[] charArray = br.readLine().toCharArray();
			for (char ch : charArray) {
				switch(ch) 
				{
				case '(':
					stack.push(ch);
					break;
					
				case ')':
					if(stack.pop() == -1) {
						isValid = false;
						break;
					}
					
				}
			}
			if(stack.isEmpty()== 0) {
				isValid= false;
				
			}
			
			if(isValid)
				sb.append("YES").append('\n');
			else
				sb.append("NO").append('\n');
			isValid = true;
			
		}
		
		System.out.println(sb);
		
		
	}
	
	
}