https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
문자열 문제
괄호를 받아서
( 인 경우에는 스택에 넣고
) 인 경우에는 스택에서 뺀다.
그 런 데
스택이 빈 상태에서 ) 가 오면
빈 스택에서 뺄 것이 없으므로 이 경우 바로 NO ! 다
왜냐면 ) 부터오면 괄호가 닫힐 가능성이 아예 없기 때문이다.
다 받고나서 스택이 빈 경우면서 플래그가 true 그대로면 -> yes
아니면 NO 출력
#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
int main(int argc, const char * argv[]) {
ios_base::sync_with_stdio(false);
int test;
// test case
cin>>test;
for(int t=0; t<test; t++){
bool flag=true;
string str;
stack<int> s;
cin>>str;
for(int i=0;i<str.size();i++){
if(str[i] =='(')
s.push(0);
else if(str[i] == ')') {
if(s.empty()){
flag = false;
break;
}else s.pop();
}
}
if(s.empty() && flag) cout<<"YES"<<'\n';
else cout<<"NO"<<'\n';
}
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
백준 10817번 세 C++/정렬/브론즈2 (0) | 2023.10.24 |
---|---|
백준 1316번 그룹 단어 체커 C++/문자열/실버5 (1) | 2023.10.23 |
백준 1152번 단어의 개수 C++/문자열/브론즈2 (0) | 2023.10.22 |
프로그래머스 가장 큰 수 C++/정렬/레벨2 (1) | 2023.10.22 |
백준 12865 평범한 배낭 C++/DP/냅색 알고리즘/골드5 (1) | 2023.10.21 |