열리는 괄호와 닫히는 괄호가 짝지어지는지 확인하는 문제입니다.
열리는 괄호와 닫히는 괄호를 미리 Map 에 넣어두고
열리는 괄호인 경우 Stack 에 넣고 닫히는 괄호인 경우 Map에서 검색하여 Stack 에 반대 괄호가 존재하는지 확인했습니다.
import java.util.*;
class Solution {
Stack<String> stack = new Stack<>();
Map<String, String> map = new HashMap<String, String>() {
{
put("{", "}");
put("(", ")");
put("[", "]");
}
};
public boolean isValid(String s) {
String[] arr = s.split("");
if(!map.containsKey(arr[0])) {
return false;
}
for(String tmp : arr) {
if(map.containsKey(tmp)) {
stack.push(tmp);
continue;
}
else if(stack.isEmpty()){
return false;
}
if(!stack.isEmpty()) {
String a = stack.pop();
if(!tmp.equals(map.get(a))) {
return false;
}
}
}
if(stack.isEmpty())return true;
return false;
}
}