풀이과정

1. getline으로 괄호 내용을 입력받는다.
2. 앞에서 부터 문장을 읽는다.
3. '('이렇게 생긴 괄호를 스택에 넣는다.
4. ')' 이 괄호가 들어올 때 마다 스택에서 pop을 시킨다. (짝을 찾아 매칭)
5. 짝이 없거나, (가 없는데 )가 들어오면 그건 VPS가 아님.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<iostream>
#include<stack>
#include<string>
 
using namespace std;
 
stack<char> leftstack;
 
int main()
{
    int T;
    unsigned long i;
    string inputps;
 
    cin >> T;
    cin.ignore();
 
    while (T--)
    {
        getline(cin, inputps);
        for (i = 0; i < inputps.size(); i++)
        {
            if (inputps[i] == '(')
                leftstack.push(1);
            else if (inputps[i] == ')')
            {
                if (leftstack.empty() == true)  break;
                leftstack.pop();
            }
        }
        if (i == inputps.size()&&(leftstack.empty()==true)) cout << "YES\n";
        else cout << "NO\n";
        while (leftstack.empty() == false) leftstack.pop();
    }
    return 0;
}
cs



+ Recent posts