[C++]백준9012번 괄호
오늘은 백준9012번 괄호 문제를 풀어보도록 하자.
스택에 관련된 가장 기본적인 문제이다. 예전 기업 코딩테스트를 봤을 때 위 문제가 나와서 손쉽게 푼 기억이 있다.
문제는 다음과 같다.
[접근법]
1. '(' 가 나오면 스택에 1 푸쉬, ')' 가 나오면 하나 팝을 한다.
2. 만일 스택의 사이즈가 0인데 ')'가 나오면 return "NO", 연산을 다 끝냈는데 사이즈가 0이면 return "YES", 아니면 "NO"
3. 그 후 스택 초기화하고 계속 반복하면 끝 :)
[코드]
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int T;
string txt;
stack<int>s;
string f(string txt) {
for (int i = 0; i < txt.length(); i++) {
if (txt[i] == '(') {
s.push(1);
}
else {
if (s.size() <= 0) {
return "NO";
}
else {
s.pop();
}
}
}
if (s.size() == 0) {
return "YES";
}
else {
return "NO";
}
}
int main() {
cin >> T;
while (T--) {
cin >> txt;
cout << f(txt) << '\n';
while (s.size()>=1) {
s.pop();
}
}
}