π¬ 1λ μ μ νμλ μ½λμ λΉν΄ μλλ λλ Έμ§λ§ μ½κ² μ κ·Όνμ¬ νμμ΅λλ€.
κ΄νΈ λ¬Έμμ΄(Parenthesis String, PS)μ λ κ°μ κ΄νΈ κΈ°νΈμΈ β(β μ β)β λ§μΌλ‘ ꡬμ±λμ΄ μλ λ¬Έμμ΄μ΄λ€. κ·Έ μ€μμ κ΄νΈμ λͺ¨μμ΄ λ°λ₯΄κ² ꡬμ±λ λ¬Έμμ΄μ μ¬λ°λ₯Έ κ΄νΈ λ¬Έμμ΄(Valid PS, VPS)μ΄λΌκ³ λΆλ₯Έλ€. ν μμ κ΄νΈ κΈ°νΈλ‘ λ β( )β λ¬Έμμ΄μ κΈ°λ³Έ VPS μ΄λΌκ³ λΆλ₯Έλ€. λ§μΌ x κ° VPS λΌλ©΄ μ΄κ²μ νλμ κ΄νΈμ λ£μ μλ‘μ΄ λ¬Έμμ΄ β(x)βλ VPS κ° λλ€. κ·Έλ¦¬κ³ λ VPS x μ yλ₯Ό μ ν©(concatenation)μν¨ μλ‘μ΄ λ¬Έμμ΄ xyλ VPS κ° λλ€. μλ₯Ό λ€μ΄ β(())()βμ β((()))β λ VPS μ΄μ§λ§ β(()(β, β(())()))β , κ·Έλ¦¬κ³ β(()β λ λͺ¨λ VPS κ° μλ λ¬Έμμ΄μ΄λ€.
μ¬λ¬λΆμ μ
λ ₯μΌλ‘ μ£Όμ΄μ§ κ΄νΈ λ¬Έμμ΄μ΄ VPS μΈμ§ μλμ§λ₯Ό νλ¨ν΄μ κ·Έ κ²°κ³Όλ₯Ό YES μ NO λ‘ λνλ΄μ΄μΌ νλ€.
Stack.pop();
νμμ΅λλ€.import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class κ΄νΈ {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
for(int i = 0; i < N; i++) {
String s = br.readLine();
Stack<Character> sc = new Stack<Character>();
for(int c = 0; c < s.length(); c++) {
if(s.charAt(c) == '(') {
sc.push(s.charAt(c));
//System.out.println("in");
}
else {
if(sc.size() == 0) {
System.out.println("NO");
break;
}
else {
sc.pop();
}
}
if(c == s.length() - 1)
if(sc.size() > 0) {
System.out.println("NO");
break;
}
else {
System.out.println("YES");
}
}
}
}
}
Stack<νν> s = new Stack<νν>();
Queue<νν> q = new LinkedList<νν>();