Algorithm๐Ÿฐ/๋ฐฑ์ค€

[๋ฐฑ์ค€] 9012 ๊ด„ํ˜ธ string

Jouureee 2021. 4. 21. 15:04

๋ฌธ์ œ : 

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;
}