import java.io.*;
import java.util.*;
class Main {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
for (int i = 0; i < count; i++) {
Stack < String > stack = new Stack < > ();
String[] strArray = br.readLine().split("");
boolean isVPS = false;
for (int j = 0; j < strArray.length; j++) {
if (strArray[j].equals("(")) {
stack.push(strArray[j]);
} else {
if (stack.isEmpty() == true) {
isVPS = false;
break;
} else {
isVPS = true;
stack.pop();
}
}
}
if (isVPS == true && stack.isEmpty() == true) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
}
스택(Stack)
LIFO(Last In First Out)형태의 자료구조로, 마지막에 추가한 항목이 가장 먼저 제거될 항목이다. 스택에서는 자주 사용되는 4가지 메소드가 있다.
해결방법