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
'Algorithm > 백준과 프로그래머스' 카테고리의 다른 글
[C++] 2164. 카드2 (0) | 2023.07.16 |
---|---|
[C++] 1158. 요세푸스 (0) | 2023.07.15 |
[C++] 10828. 스택 (0) | 2023.07.11 |
[C++] 2751. 수 정렬하기 2 (0) | 2023.07.06 |
[C++] 11728 : 배열 합치기 (0) | 2022.04.12 |