본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 9012 괄호

by 까망 하르방 2021. 2. 24.
반응형

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

 Input 

6

(())())

(((()())()

(()())((()))

((()()(()))(((())))()

()()()()(()()())()

(()((())()(

 

 Output 

NO
NO
YES
NO
YES
NO

1) 여는 괄호인 경우

    → push

2) 닫는 괄호인 경우 

    → pop해서 여는 괄호인지 확인

3) 주어진 괄호 문자열을 모두 처리한 후

    → 스택에 남아 있는 원소 확인


import java.util.Scanner;
 
class Stack{
    int top;
    int[] stack;
     
    public Stack(int size) {
        top = -1;
        stack = new int[size];
    }
     
    public void push(int x) {
        stack[++top] = x;
    }
 
    public boolean pop() {
        if( top == -1) {
            return true;
        }
        top--;
        return false;
    }
}
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = Integer.parseInt(sc.nextLine());
         
        String[] str = new String[T];
         
        for(int i=0; i<T ;i++) {
            str[i] = sc.nextLine();
        }
 
        for(int j=0; j<T; j++) {
            Stack st = new Stack(str[j].length());
            boolean flag = true;
            for(int i=0; i<str[j].length(); i++) {
                if(str[j].charAt(i) == '(') {
                    st.push(1);
                }else {
                    if(st.pop()) {
                        str[j] = "NO";
                        flag = false;
                        break;
                    }
                }
            }
            if(flag) {
                if(st.top != -1) {
                    str[j] = "NO";
                }else {
                    str[j] = "YES";
                }
            }
            st = null;
        }
         
        for(int j=0; j<T; j++) {
            System.out.println(str[j]);
        }
    }
}

 

반응형

'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 1652 누울 자리를 찾아라  (0) 2021.02.24
[BOJ] 백준 1205 등수 구하기  (0) 2021.02.24
[BOJ] 백준 1193 분수찾기  (0) 2021.02.24
[BOJ] 백준 1021 회전하는 큐  (0) 2021.02.24
[BOJ] 백준 5430 AC  (0) 2021.02.24

댓글