μ λ¬Έμ λ, Stack ν΄λμ€λ₯Ό μ¬μ©ν΄μ νμ΄λ λλ€.
κ·Όλ°, λ¬Έμ λ₯Ό μ μ΄ν΄νκ³ , Stack λ°μ΄ν° ꡬ쑰λ₯Ό μ μ κ³ μμΌλ©΄ κ΅³μ΄ Stackμ μ¬μ©νμ§ μμλ νλ¦°λ€.
λκ°μ κ²½μ°λ Stackμ μ¬μ©νμ§ μμλ€...γ
λ¨Όμ VPS κ° λ μ μλ 쑰건μ κ΄νΈκ° μ§μ μ΄λ€μΌ νκ³ , κ°μ μ μλ ννλ‘ μ λ ₯λμΌ νλ€λ κ²μ΄λ€.
κ·μΉ 1.
[ () () ( ] μ κ²½μ° κ΄νΈκ° μ§μ μ΄λ£¨μ§ λͺ»νλ―λ‘ VPSκ° μλλ€.
κ·μΉ 2.
[ () () )( ] μ κ²½μ° κ΄νΈμ κ°―μλ μ§μ μ΄λ£¨μ§λ§, )( κ° κ°μ μ μλ ννμ΄λ―λ‘ VPS κ° μλλ€.
μ΄ κ·μΉμ μκ°ν΄μ,
μ΄κΈ°κ° 0μΌλ‘ μ§μ ν λ³μλ₯Ό, " ( " κ° μ λ ₯λλ©΄ +1 μ νκ³ " ) " κ° μ λ ₯λλ©΄ -1μ νλλ‘ νκ³
μ΅μ’ κ°μ΄ 0μ΄ λλ©΄ κ΄νΈκ° μ§μ μ΄λ£¬λ€λ κ²μ μ μ μλ€.
νμ§λ§, ")" κ° λ¨Όμ μ λ ₯λλ κ²½μ°λ₯Ό μ²λ¦¬ν΄μΌνλ€.
μ μν©μ, μ λ ₯λ λλ§λ€ +1 -1 λλ λ³μμ λμ ν©μ΄ -1μ΄ λλ μκ° ")" κ° λ¨Όμ λ€μ΄μ€λ μν©μμ μ μ μλ€.
μ¦, λ³μκ° +1,-1 μ°μ°μ΄ μ΄λ£¨μ΄μ§λ λμ μμκ° λμ§ μμΌλ©° μ΅μ’ κ°μ΄ 0 μΈ κ²½μ° VPS μμ νλ¨ν μ μλ€.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
//κ΄νΈμ κ°―μκ° μ§μ΄ λ§λ κ°? && ) κ° λ¨Όμ λ€μ΄μ€μ§ μλκ°?
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.valueOf(br.readLine());
for (int i = 1; i <= N; i++) {
if (isVPS(br.readLine())) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
static boolean isVPS(String input) {
int result = 0;
for (int i = 0; i < input.length(); i++) {
if (input.charAt(i) == '(') {
result++;
} else if (input.charAt(i) == ')') {
result--;
}
if (result == -1) { //κ·μΉ 2λ₯Ό μ΄κΉ
return false;
}
}
return result == 0;
}
}