메모
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s;
while (true) {
s = in.nextLine();
if (s.equals(".")) { // 종료 조건문
break;
}
System.out.println(solve(s));
}
}
public static String solve(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i); // i 번째 문자
if(c == '(' || c == '[') { // '(' 또는 '[' 일 경우 : 스택에 push
stack.push(c);
} else if (c == ')') { // ')' 일 경우
if (stack.empty() || stack.peek() != '(') { // 스택이 비어있거나 or pop할 원소가 '(' 과 매칭이 안되는 경우
return "no";
} else {
stack.pop();
}
} else if(c == ']') { // ']' 일 경우
if(stack.empty() || stack.peek() != '[') { // 스택이 비어있거나 or pop할 원소가 '[' 와 매칭이 안되는 경우
return "no";
} else {
stack.pop();
}
}
}
if(stack.empty()) {
return "yes";
} else {
return "no";
}
}
}
괄호 (백준 9012번) 와 유사한 문제
괄호(소괄호, 대괄호)가 아닌 문자의 경우, 그냥 넘어가면 된다.
참고: [백준] 4949번 : 균형잡힌 세상 - JAVA [자바]