[BOJ]백준 9012번:괄호(JAVA)

ho's·2022년 4월 24일
0
post-custom-banner

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

문제

()를 VPS라 했을때, x = () 이라고 하면,
(x)또한 VPS가 된다. (()())

풀이

스택으로 문제를 풀어보자.
1. 테스트 케이스를 입력받는다.
2. (1)에서 입력받은 테스트케이스의 수 만큼, 문자열을 입력한다.
3. '('이 들어올 경우 push를 하고, ')' 가 들어올 경우 pop을 해준다.
4. 만약 첫번째에 ')' 가 들어올 경우 No를 출력한다.

  • stack의 size가 0이면 VPS가 성립되지 않아 No를 출력한다.
  • 문자열을 모두 push와 pop을 한 후, stack이 비어있는지 체크를 해주고
    비어있다면 Yes, 비어있지 않다면 No를 출력한다.

소스코드


import java.util.Scanner;
import java.util.Stack;

public class Main {
	public static void main(String[] args){
    	Scanner scan = new Scanner(System.in);
        int T = scan.nextInt();
        for(int i=0;i<T;i++){
        	System.out.println(solve(scan.next()));
        }
    }
    
    public static String solve(String s){
    	Stack<Character> stack = new Stack<>();
        for(int i=0;i<s.length();i++){
        	char c = s.charAt(i);
            
            if( c == '(') {
            	stack.push(c);
            } else if(stack.empty()){
            	return "NO";
            } else {
            	stack.pop();
            } 
        }
        
        if(stack.empty()){
        	return "YES";
        }
        else{
        	return "NO";
        }
        
    }
}
profile
그래야만 한다
post-custom-banner

0개의 댓글