[백준 BOJ 9012] 괄호

2020. 2. 14. 00:03BOJ

반응형

백준 링크

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

 

9012번: 괄호

문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(conc

www.acmicpc.net

풀이

  • 기본적인 스택문제이다
  • 스택이 비어있지 않고, top이 'C'이며 현재 문자가 ')'이면 pop
  • 그외에는 push
  • 마지막에 스택이 비어있다면 YES, 남아있으면 NO

코드

#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    char a[55];
    scanf("%d",&n);
    for(int t=0;t<n;t++){
        stack<char> s;
        scanf("%s",a);
        int l=strlen(a);
        for(int i=0;i<l;i++){
            if(!s.empty()&&s.top()=='('&&a[i]==')'){
                s.pop();
            }
            else s.push(a[i]);
        }
        if(s.empty()) printf("YES\n");
        else printf("NO\n");
    }
}

개선점

  • 굳이 스택을 쓰지않고 각 괄호의 개수만 세어주어도 된다
반응형

'BOJ' 카테고리의 다른 글

[백준 BOJ 10868] 최솟값  (0) 2020.02.21
[백준 BOJ 1766] 문제집  (0) 2020.02.19
[백준 BOJ 1916] 최소비용 구하기  (0) 2020.02.17
[백준 BOJ 2294] 동전 2  (0) 2020.02.14