<문제>
<Code>
#include <iostream>
#include <string>
#include <stack>
using namespace std;
bool Vps(string str){
int len=(int)str.length(); //문자열 길이
stack<char> cstack; //char type stack
for(int i=0;i<len;i++){
char c=str[i];
if(c=='('){
cstack.push(str[i]);
}else{ //')'
if(!cstack.empty()){ //비어있지 않으면 pop
cstack.pop();
}else{ //비어있으면(여는 괄호 짝이 없음) false
return false;
}
}
}
return cstack.empty(); //스택에 괄호가 남아있으면 false
}
int main() {
int n;
cin>>n;
for(int i=0;i<n;i++){
string str;
cin>>str;
if(Vps(str)){
cout<<"YES"<<endl;
}else{
cout<<"NO"<<endl;
}
}
return 0;
}
<Comment>
스택 필수 예제인듯
여는 괄호->push
닫는 괄호->비어있으면 NO , 안비어있으면 pop
끝까지 검사했는데도 안비어있으면 NO
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
'Problem Solving > 백준' 카테고리의 다른 글
[백준-10845] 큐 (0) | 2021.03.17 |
---|---|
[백준-10828] 스택 (0) | 2021.03.17 |
[백준-15596] 정수 N개의 합 (0) | 2021.02.05 |
[백준-2562] 최댓값 (0) | 2021.02.04 |
[백준-2884] 알람 시계 (0) | 2021.02.03 |