이 문제는 알고리즘 풀다보면 진짜 많이 마주친다.
기본이 이 문제이고, 여기서 응용을 해서 나오기도 한다.
우선 나는 stack을 이용해서 풀었고,
HashMap을 사용하면 좀 더 코드를 짧게 작성할 수 있는데 그냥 if문으로만 작성했다.
나는 false를 return하는 경우에 대해서 다 작성했다.
import java.util.*;
class Solution {
public boolean isValid(String str) {
Stack<Character> s = new Stack<>();
for(int index = 0; index < str.length(); index++) {
char temp = str.charAt(index);
if(s.isEmpty()) {
if(temp == ')' || temp == '}' || temp == ']') {
return false;
}
s.add(temp);
}
else {
if(temp == ')') {
if(s.peek() != '(') {
return false;
}
s.pop();
continue;
}
else if(temp == '}') {
if(s.peek() != '{') {
return false;
}
s.pop();
continue;
}
else if (temp == ']') {
if(s.peek() != '[') {
return false;
}
s.pop();
continue;
}
s.add(temp);
}
}
if(!s.isEmpty()) {
return false;
}
return true;
}
}