Stack을 이용한 문제입니다.
Stack은 후입선출로 LIFO 입니다.
여는 괄호일 때 스택에 추가하고 닫는 괄호일 때 스택에서 pop 했습니다.
import java.io.*;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
while (true) {
String str = br.readLine();
if (str.equals(".")) break;
Stack<String> stack = new Stack<>();
String[] sentence = str.split("");
for(String word : sentence){
switch (word) {
case ("("):
case ("["):
stack.push(word);
break;
case (")"):
if(!stack.isEmpty() && stack.peek().equals("("))
stack.pop();
else stack.push(")");
break;
case ("]"):
if(!stack.isEmpty() && stack.peek().equals("["))
stack.pop();
else stack.push("]");
break;
}
}
if (stack.empty())
bw.write("yes\n");
else
bw.write("no\n");
bw.flush();
}
}
}