SMALL
안녕하세요 오늘은 스택을 이용해서 간단하게 문제를 풀어보겠습니다.
전략:
1. 한 글자씩 비교할 것이므로 char타입을 stack을 선언해준다.
2. 만약 스택의 제일 위가 ')'이면 count++, s.pop()을 해주고, 그게 아니라면 count--, s.pop()을 해줌으로 count가 음수가 되면 실행이 끝내게 한다.
3. 만약 (, )짝이 맞는다면 count는 결론적으로 0이 될 것이므로 만약 0이면 YES를 출력하고 그것이 아니면 NO를 출력한다.
코드:
#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T;
cin>>T;
for(int i= 0; i<T; i++){
stack<char> s;
string N;
cin>>N;
int len = N.length(),count = 0;
for(int j= 0; j<len; j++){
s.push(N[j]);
}
for(int j= 0; j<len; j++){
if(s.top() == ')'){
count++;
s.pop();
}
else{
count--;
s.pop();
}
if(count<0){
break;
}
}
if(count==0){
cout<<"YES"<<"\n";
}
else{
cout<<"NO"<<"\n";
}
}
}
LIST
'BOJ 문제풀이' 카테고리의 다른 글
백준 1654번 c++ 풀이 (복습필요) (0) | 2021.08.10 |
---|---|
백준 15829 c++ 풀이 (0) | 2021.08.07 |
백준 11866번 c++ 풀이 (0) | 2021.08.06 |
백준 9184번 c++ 풀이 (0) | 2021.08.06 |
백준 10816번 c++ 풀이 (0) | 2021.08.06 |