import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int num = Integer.parseInt(bf.readLine());
for (int i = 0; i<num; i++) {
sb.append(solve(bf.readLine())).append('\n');
}
System.out.println(sb);
}
static String solve (String text) {
Stack<String> stack = new Stack<>();
for (int i = 0; i<text.length(); i++) {
if (text.charAt(i) == '(') {
stack.push("(");
} else {
if (stack.isEmpty()) {
return "NO";
} else {
stack.pop();
}
}
}
if (stack.isEmpty()) {
return "YES";
} else {
return "NO";
}
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int num = Integer.parseInt(bf.readLine());
for (int i = 0; i<num; i++) {
sb.append(solve(bf.readLine())).append('\n');
}
System.out.println(sb);
}
static String solve (String text) {
int result = 0;
for (int i = 0; i<text.length(); i++) {
if (text.charAt(i) == '(') {
result++;
} else {
if (result == 0) {
return "NO";
} else {
result--;
}
}
}
if (result==0) {
return "YES";
} else {
return "NO";
}
}
}
stack을 활용해서 괄호가 열리고 닫히는걸 확인할 수 있었다. 굳이 stack을 사용하지 않아도 푸는건 가능했다.
다만 stack을 쓸경우에 빈 스택에 pop을 하는경우가 생기면 에러가 난다.
추가로 백준 문제에서 예제 입력을 복사해서 입력문에 넣었을때
System.out.println(); 을 쓰면 마지막 한줄이 안 출력이 안된다...
왜 그러는지 찾지는 못했지만 StringBuilder를 사용해서 해결했다.