문제

접근방식
(1) 각 문자열을 입력 받기 위한 BufferedReader 객체 생성
(2) 입력된 문자열이 "." 이면 프로그램 종료
(3) 문자열을 순회하면서 각 문자를 확인
(4) 여는 괄호인 경우, 스택에 push
(5) 닫는 괄호인 경우, 스택이 비어있지 않은지 확인하고, 맞는 여는 괄호인지 확인합니다.
(6) 모든 문자를 확인한 후에도 스택에 무언가 남아있는지 확인합니다.
(7) 스택이 비어있다면 "yes"를 출력하고 그러ㅎ지 않다면 "no"를 출력합니다.
제출한 코드
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));
StringBuilder sb = new StringBuilder();
while (true) {
String input = br.readLine();
if (input.equals(".")) break;
sb.append(solve(input)).append("\n");
}
System.out.println(sb);
}
public static String solve(String s) {
Stack<Chracter> 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 == ')' || c == '[') {
if (stack.isEmpty()) return "no";
char top = stack.pop();
if ((c == ')' && top != '(') || (c == ']' && top != '[')) return "no";
}
}
if (stack.isEmpty()) {
return "yes";
} else {
return "no";
}
}
}