백준 9012. 괄호 문제와 같은 문제입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
// 백준 9012와 같은 문제입니다.
// 조건에 ( 와 [ 를 넣고 짝이 맞는지에 대한 조건을 추가
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String s;
while (true) {
s = br.readLine();
if (s.equals(".")) { // 종료 조건문
break;
}
sb.append(solve(s)).append('\n');
}
System.out.println(sb);
}
public static String solve(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
// 여는 괄호일 경우
if (c == '(' || c == '[') {
stack.push(c);
} else if (c == ')') {
// 스택이 비어있거나 pop할 원소가 소괄호랑 매칭 X
if (stack.empty() || stack.peek() != '(') {
return "no";
} else {
stack.pop();
}
} else if (c == ']') {
// 스택이 비어있거나 pop할 원소가 대괄호랑 매칭 X
if (stack.empty() || stack.peek() != '[') {
return "no";
} else {
stack.pop();
}
}
}
if (stack.empty()) {
return "yes";
} else {
return "no";
}
}
}