본문 바로가기
(문제풀이)

백준 9012_괄호

by cogito-new 2023. 6. 5.

- 스택을 사용해서 (이면 넣고, )이면 빼 주며 처리하는 문제.

- 해당 문제풀이 방식을 지속적으로 활용해야 함.

- 메소드를 분리시켜서 input, logic 부를 분리해서 예외처리 시 복잡하지 않게 처리해야 함.

package stack;

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

public class bj9012 {
    public static void foo(String s){
        Stack<Character> stack = new Stack<>();

        int i = 0 ;
        while(i < s.length()){
            char c = s.charAt(i);
            if(c == '('){
                stack.push(c);
            } else {    // ')'
                if(stack.size()<1){
                    System.out.println("NO");
                    return;
                }
                stack.pop();
            }
            i++;
        }
        if(stack.size() > 0){
            System.out.println("NO");
            return;
        } else {    //stack.size() == 0
            System.out.println("YES");
        }
    }

    public static void main(String[] args) {
        //Input
        Scanner scanner = new Scanner(System.in);
        int T = scanner.nextInt();

        for(int i = 0; i < T; i++){
            foo(scanner.next());
        }
    }

}
반응형