코딩테스트/BOJ

[BOJ] 9012 괄호 - JAVA

5월._. 2022. 2. 5.
728x90


1. 풀이

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

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

        Stack<Character> stack;

        StringBuilder sb = new StringBuilder();
        while(T-->0){
            stack = new Stack<>();
            String line = in.readLine();

            for(int i=0;i<line.length();i++){
                if(line.charAt(i)=='(') stack.push('(');
                else if(!stack.empty()) stack.pop();
                else {
                    stack.push('*');    //체크위해서 넣어둠
                    break;
                }
            }

            if(stack.empty()) sb.append("YES\n");
            else sb.append("NO\n");
        }

        System.out.print(sb);
    }
}

'('이면 push, ')'이고 stack이 비어있지 않으면 pop시킨다.

')'이고 stack이 비어있다면 짝을 이루는 '('가 없다는 의미이므로 반복을 멈춘다. 마지막에 stack.empty()로 VPS여부를 체크하기때문에 반복을 멈추기 전에 비어있는 스택에 의미없는 '*'를 넣어주었다. 


2. 결과

풀 때는 헷갈렸지만 다 풀고나면 간단한 문제였다.

'짝을 이룬다'는 점에만 초점을 두면 쉽게 풀린다.

'코딩테스트 > BOJ' 카테고리의 다른 글

[BOJ] 17298 오큰수 - JAVA  (0) 2022.02.05
[BOJ] 1874 스택수열 - JAVA  (0) 2022.02.05
[BOJ] 4949 균형잡힌 세상 - JAVA  (0) 2022.02.05
[BOJ] 10772 제로 - JAVA  (0) 2022.02.05
[BOJ] 10828 스택 - JAVA  (0) 2022.02.05

댓글