스택을 이용한 기본 문제였다.
항상 top()을 접근하기 전에 스택이 empty() 인지를 확인해야 한다! (이걸 자주 빠뜨렸었다. )
( 이면 푸시한다.
) 가 나오면, 현재 스택이 비어있지 않은지 확인하고, top() 이 ( 인지 확인한다.
( 과 )는 짝이 맞는 괄호이기 때문에, 현재 top() 인 (를 팝 한다.
오늘은 한 번에 맞았다.
/** 괄호
https://www.acmicpc.net/problem/9012
http://boj.kr/ac1a8f71cfbe4c62abbc1aa710778283
*/
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
int t;
string input;
bool check(string s){
stack<char> st;
for(auto i : s){
if(i == '(') st.push('(');
else if(!st.empty() && st.top() == '('){
st.pop();
}else return false;
}
if(st.empty()) return true;
else return false;
}
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> t;
while(t--){
cin >> input;
if(check(input)) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
카드 백준 11652번 c++ (0) | 2022.02.13 |
---|---|
쇠막대기 백준 10799번 c++ (0) | 2022.02.13 |
좋은 단어 백준 3986번 c++ (두번째 풀기) (0) | 2022.02.11 |
Hasing 백준 15829번 c++ (0) | 2022.02.11 |
시리얼 번호 백준 1431번 c++ (0) | 2022.02.10 |