스택 자료구조를 이용했다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include<stack>
using namespace std;
int main() {
int n;
string input;
string isyes;
cin >> n;
for (int i = 0; i < n; i++) {
isyes = "YES";
stack<char> st; // 매번 스택 초기화 해야함.
cin >> input;
for (int k = 0; k < input.length(); k++) {
if (input[k] == '(')
st.push(input[k]);
else if (!st.empty() && input[k] == ')' && st.top() == '(')//어차피 순차적으로 확인하기 때문에 ))이런 형태가 나오면 NO임
st.pop();
else {//위에 둘 경우가 아닌거면 "))"이런 형태인데 이러면 NO임
isyes = "NO";
break;
}
}
if (!st.empty()) // 다 돌았는데 '('이게 들어가 있으면 짝이 안 맞기에 넣었음.
isyes = "NO";
cout << isyes << '\n';
}
return 0;
}