<< 문제 >>
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
연속으로 이어진 괄호를 바탕으로 (, ) 가 짝을 잘 이루고 있는지 확인하는 문제
잘 생각해야하는 것은 )의 수가 (보다 많아지는 순간 그 문자열은 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 |
댓글 영역