본문 바로가기
알고리즘/백준

[JAVA]백준_9012_괄호

by 박 현 황 2021. 7. 19.

문제링크

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

 

9012번: 괄호

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

www.acmicpc.net

 

 

 

package BOJ;

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

public class Main_9012 {
    static int T;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        T = Integer.parseInt(br.readLine());

        for(int t=0;t<T;t++){
            String str = br.readLine();
            Stack<Character> stack = new Stack<>();
            int i,size;
            for(i=0, size = str.length();i<size;i++){
                if(str.charAt(i) == '(') stack.push(str.charAt(i));

                else {
                    if(!stack.isEmpty()) stack.pop();
                    else break;
                }
            }
            if(i == size && stack.isEmpty()){
                System.out.println("YES");
            }
            else
                System.out.println("NO");
        }

    }
}

 

괄호 짝궁을 찾아야한다.

 

이렇게 왼쪽 괄호 넣어주고?

이렇게 오른쪽 괄호 들어오면 빼주고?

이렇게 해서 체크를 진행한다.

 

만약에 ( 가 안들어왔는데 )가 들어오면 못빼니까? (짝수가 안맞아서)

결국 )가 더 많으면 isEmpty()인 경우 더 뺄려고 해서 안되고

 

(가 더들어오면 for문은 끝나겠지만

짝수가 맞을려면 for문이 끝났을 때 스택이 다 안비어있어서 안된다.

 

'알고리즘 > 백준' 카테고리의 다른 글

[JAVA]백준_10816_숫자카드2  (0) 2021.08.07
[JAVA]백준_1920_수찾기  (0) 2021.08.07
[JAVA]백준_14722_우유도시  (0) 2021.07.18
[JAVA]백준_2644_촌수계산  (0) 2021.06.26
[JAVA]백준_2583_영역구하기  (0) 2021.06.26