본문 바로가기
코딩테스트 준비/백준

[백준] 9012번 - 괄호 [Java]

by mwzz6 2025. 2. 11.

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

 

[백준] 9012번 - 괄호 [Java]
[백준] 9012번 - 괄호 [Java]


1.  아이디어

 

괄호가 서로 소거되서 완전히 사라지면 올바른 문자열이 되는 문제로 Stack 자료구조를 활용하면 간단하게 해결할 수 있다.


2. 문제풀이

 

열린 괄호면 Stack에 push하고 닫힌 괄호면 Stack이 비어있지 않을 때 pop을 하면 괄호가 쌍을 이루는 것을 구현할 수 있다. 최종적으로 Stack이 비어있어야 올바른 문자열이 된다.


3. 코드

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int T = Integer.parseInt(br.readLine());
        for (int tc = 1; tc <= T; tc++) {
            Deque<Character> stack = new ArrayDeque<>();

            char[] input = br.readLine().toCharArray();
            boolean flag = true;
            for (char c : input) {
                if (c == '(') {
                    stack.push(c);
                } else {
                    if (stack.isEmpty()) {
                        flag = false;
                        break;
                    } else {
                        stack.pop();
                    }
                }
            }

            if (!stack.isEmpty()) flag = false;

            if (flag) bw.write("YES\n");
            else bw.write("NO\n");
        }

        bw.flush();
    }
}

4. 후기