💡Problem Solving/BOJ

[BOJ 9012] 괄호 (Java)

gom20 2021. 11. 14. 10:03

문제

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

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 

풀이

Stack의 대표문제

'(' 는 Stack에 넣고, ')' 가 나오면 Stack top이 '(' 일 경우 top을 pop한다. 

모든 순회가 끝난 후 Stack이 비어있다면 올바른 괄호이다.

 

아래 문제와 유사하다.

2021.10.18 - [Problem Solving/Programmers] - [프로그래머스] 올바른 괄호 (Java)

 

[프로그래머스] 올바른 괄호 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/12909 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예..

gom20.tistory.com

 

소스코드

package stack;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;

public class BOJ9012 {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();
        int T = Integer.parseInt(br.readLine());
        Stack<Character> st = new Stack<Character>();
        for(int i = 0; i < T; i++){
            st.clear();
            String s = br.readLine();
            for(int j = 0; j < s.length(); j++){
                char c = s.charAt(j);
                if(c == '('){
                    st.push(s.charAt(j));
                } else {
                    if(!st.isEmpty() && st.peek() == '('){
                        st.pop();
                    } else {
                        st.push(c);
                        break;
                    }
                }
            }
            if(st.isEmpty()) sb.append("YES\n");
            else sb.append("NO\n");
        }
        bw.write(sb.toString());
        bw.flush();
    }
}

'💡Problem Solving > BOJ' 카테고리의 다른 글

[BOJ 18258] 큐 2 (Java)  (0) 2021.11.14
[BOJ 4949] 균형잡힌 세상 (Java)  (0) 2021.11.14
[BOJ 17298] 오큰수 (Java)  (0) 2021.11.13
[BOJ 1956] 운동 (Java)  (0) 2021.11.13
[BOJ 1655] 가운데를 말해요 (Java)  (0) 2021.11.12