[스택] 백준 9012번 괄호

업데이트:

백준 9012번

괄호

_2021-01-08__12 10 02

스택의 가장 기본적인 문제이다.

’(‘ 가 나오면 스택에 집어넣고, ‘)’를 만나면 스택의 top을 pop 한다.

끝까지 수행했을 때 괄호의 짝이 맞다면 스택은 비었을 것이고, 괄호의 짝이 맞지 않다면 스택이 비지 않았을 것이다.

따라서 이 과정을 모두 반복했을 때 스택이 비었다면 VPS, 비어있지 않다면 VPS가 아니다.

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

using namespace std;

int main(){
    stack<char> checker;
    string inp;
    int num;
    cin >> num;

    for(int i=0;i<num;i++){
        cin >> inp;
        for(int j=0;j<inp.size();j++){
            if(inp[j]=='('){
                checker.push(inp[j]);
            }
            else if(inp[j]==')'){
                if(!checker.empty()){
                    checker.pop();
                }
                else{
                    checker.push(inp[j]);
                    break;
                }
            }
        }
        if(!checker.empty()){
            cout << "NO\n";
            while(!checker.empty()){
                checker.pop();
            }
        }
        else{
            cout << "YES\n";
        }
    }
    return 0;
}1

카테고리:

업데이트:

댓글남기기