괄호가 잘 닫혔는 지 확인하는 문제.
class Solution {
public boolean isValid(String s) {
Stack<String> stack = new Stack<>();
String[] strArr = s.split("");
if(s.length() == 0) return true;
if(s.length() % 2 != 0) return false;
for(int i = 0; i < strArr.length; i++) {
switch(strArr[i]){
case "(": {
stack.push("(");
break;
}
case "{": {
stack.push("{");
break;
}
case "[": {
stack.push("[");
break;
}
case ")": {
if(!stack.empty() && stack.peek().equals("(") )
stack.pop();
else return false;
break;
}
case "}": {
if(!stack.empty() && stack.peek().equals("{") )
stack.pop();
else return false;
break;
}
case "]": {
if(!stack.empty() && stack.peek().equals("[") )
stack.pop();
else return false;
break;
}
}
}
return stack.empty();
}
}
이녀석도 좀 애를 썼던 문제 ... 결국 구글링의 힘을 빌렸지만
stack을 c언어로만 해봤어서, java로 사용할 생각조차 못했다.
이 문제 덕분에 자바로 어떻게 쓰는 지 알게 됐지만... 여전히 어색하다.
다시 한 번 풀어봐야 할 문제!