이번 문제는 유효한 s표현의 조건을 조건문으로 잘 작성하는게 중요한거 같다.
내가 이해한 조건은
1) 열고닫는 괄호의 짝이 있어야하고,
2) 닫는 괄호는 바로 이전에 같은 모양의 여는 괄호가 있어야한다.
우선은 여는 괄호만 담은 배열과 닫는 괄호만 담은 배열을 만들어준다.
배열안에 순서는 모양대로 맞춰준다.
if 조건문 첫번째는
s의 길이가 홀수면 짝이 맞지 않는 괄호가 있다는 뜻이므로 그 경우를 걸러주고,
두번째는 닫는괄호가 나왔을때,
그 바로 앞의 괄호가 같은 모양의 여는 괄호인지 (짝이 맞는지)를 확인해준다.
function isValid(s) {
const left = ['(', '[', '{'];
const right = [')', ']', '}'];
const splited = s.split("");
if (s.length % 2 === 1) {
return false;
}
else {
for (i=0; i<splited.length; i++) {
if (right.includes(splited[i])) {
return (left.indexOf(splited[i-1]) === right.indexOf(splited[i]))
? true
: false
}
}
}
}