문제 링크: https://www.acmicpc.net/problem/9012
스택을 활용하여 풀었습니다.
'('를 만나면 모두 스택에 넣고, ')'를 만나면 스택에서 원소를 꺼냅니다.
스택이 비어있을 때 ')'를 만나면 옳은 괄호 문자열이 아니므로, 바로 false를 리턴합니다.
문자열이 끝났을 때, 스택이 비어있지 않고 '("가 남아있다면 역시 올바르지 않은 문자열이므로 false를 리턴합니다.
C++
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool vpsCheck(string);
int main() {
int count = 0;
string str;
cin >> count;
for(int i = 0; i < count; i++) {
cin >> str;
if(vpsCheck(str)) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
bool vpsCheck(string str) {
stack cStack;
int len = (int)str.length();
for(int i = 0; i < len; i++) {
char c = str[i];
if(c == '(') cStack.push(c);
else {
if(!cStack.empty()) cStack.pop();
else return false;
}
}
return cStack.empty();
}
'Algorithm > BOJ' 카테고리의 다른 글
BOJ 2493번: 탑 (0) | 2018.10.03 |
---|---|
BOJ 9935번: 문자열 폭발 (0) | 2018.10.03 |
BOJ 10799번: 쇠막대기 (0) | 2018.10.03 |
BOJ 1001번: A-B (0) | 2018.10.03 |
BOJ 1000번: A+B (0) | 2018.10.03 |