<< 문제 >>
https://www.acmicpc.net/problem/9012
연속으로 이어진 괄호를 바탕으로 (, ) 가 짝을 잘 이루고 있는지 확인하는 문제
잘 생각해야하는 것은 )의 수가 (보다 많아지는 순간 그 문자열은 VPS가 될 수 없다는 것이다.
이미 ) 가 많아진 순간 열리지 않은 괄호를 닫아버리는 것이기 때문이다.
그 부분까지 테스트하면 크게 문제 없을 것이라 생각합니다.
<< 코드 >>
#include <iostream>
#include <string>
using namespace std;
bool checkVPS(string str) {
int stack = 0;
for (char ch : str) {
if (ch == '(')
stack++;
else if (')')
stack--;
// 중간에 -1이 된 경우는 무조건 false
if (stack < 0)
return false;
}
// 0일 때만 true
if (stack == 0)
return true;
else
return false;
}
int main() {
int num;
cin >> num;
string input;
for (int i = 0; i < num; i++) {
cin >> input;
if(checkVPS(input)){
cout << "YES" << '\n';
}
else{
cout << "NO" << '\n';
}
}
}
< 백준 BaekJoon : 12789번 도키도키 간식드리미> C++ (0) | 2024.01.23 |
---|---|
< 백준 BaekJoon : 4949번 괄호> C++ (0) | 2024.01.22 |
< 백준 BaekJoon : 10773번 제로> C++ (0) | 2024.01.22 |
< 백준 BaekJoon : 28278번 스택 2> C++ (0) | 2024.01.22 |
< 백준 BaekJoon : 13909번 창문 닫기> C++ (0) | 2024.01.22 |
댓글 영역