Algorithm/백준과 프로그래머스
[C++] 9012. 괄호
young_3060
2023. 7. 14. 15:00
728x90
풀이과정
괄호 문제는 스택의 대표적 문제이다.
- 짝맞추는 문제이므로 '('가 들어왔을때만 스택에 넣어준다.
- ')'가 들어왔을 때 스택이 비어있다면 잘못된 괄호이므로 "NO"를 출력해주고 아니라면 짝이 맞았으므로 스택을 pop해준다.
- 문자열 길이만큼 진행한 뒤 스택이 비어있지 않다면 짝이 안맞았음을 의미하므로 "NO"를 출력한다.
- 스택이 비어있다면 짝이 다 맞았다는 것을 의미하므로 "YES"를 출력한다.
#include <iostream>
#include <stack>
using namespace std;
void VPS(string inp) {
stack<char> s;
for (int i = 0; i < inp.length(); i++)
{
if (inp[i] == '(')
s.push('(');
else
{
if (!s.empty())
s.pop();
else {
cout << "NO" << "\n";
return;
}
}
}
if(!s.empty()) {
cout << "NO" << "\n";
return;
}
cout << "YES" << "\n";
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N; cin >> N;
for(int i=0; i<N; i++) {
string inp;
cin >> inp;
VPS(inp);
}
return 0;
}
728x90