풀이과정
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 |
'백준 문제풀이 (C++) > 자료구조' 카테고리의 다른 글
[백준] BOJ 9093번 단어뒤집기 C++ 풀이법 (0) | 2020.09.02 |
---|---|
[백준] 10828번 스택 C++ 풀이법 (0) | 2020.09.02 |