본문 바로가기
Algorithm🐰/백준

[백준] 9012 괄호 string

by Jouureee 2021. 4. 21.

문제 : 

www.acmicpc.net/problem/9012

 

9012번: 괄호

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

www.acmicpc.net

 

분석:

유제를 본 적이 있어 어떻게 접근하면 효율적일까 고민하던 중 stack으로 푼 방식이 획기적이었다!! 

 

c++ 코드 :

//
//  bracket.cpp
//  SOMA👩🏻‍💻
//
//  Created by JoSoJeong on 2021/04/21.
//

#include <iostream>
#include <stack>
#include <string>

using namespace std;
int N;


bool isBracket(string s){
    int len = (int)s.length();
    stack <char> ss;
    for(int i = 0; i < len; i++){
        char c = s[i];
        
        if(c == '('){
            ss.push(c);
        }else{
            if(!ss.empty()){
                ss.pop();
            }else{
                return false;
            }
        }
    }
    return ss.empty();
}


int main(){
    cin >> N;
    for(int i =0; i < N; i++){
        string s;
        cin >> s;
        if(isBracket(s)){
            cout << "YES" << '\n';
        }else {
            cout << "NO" << '\n';
        }
    }
    return 0;
}

댓글