https://app.codility.com/programmers/lessons/7-stacks_and_queues/brackets/
자료구조와 알고리즘 수업에서 배웠던 stack법을 떠올리고 참고해서 풀었다.
function solution(S) {
stack = [];
S = S.split('')
for (let v in S) {
// v는 S의 인덱스값인 숫자일 뿐이니
// v를 S[v]에 넣어 S의 각 index를 뽑음
let i = S[v]
// 처음이 열리는 애라면 넣고
if ( i==='{' || i === '(' || i === '[') {
stack.push(i)
} else {
// 스택의 길이가 0이라면 0을 반납하여 에러처리를 해줌
if (stack.length === 0) return 0
// 그후, 들어온 애들이 닫는 애고, 마지막으로 존재하는 애가 {라면
// 짝이 일치하는 것이니 stack에서 한 개를 빼줌
if(i === '}' && stack[stack.length-1]==='{') stack.pop()
if(i === ']' && stack[stack.length-1]==='[') stack.pop()
if(i === ')' && stack[stack.length-1]==='(') stack.pop()
}
}
// 최종적으로 짝 지어진 애들을 뺐는데도 길이가 남아있다면 맞춰지지 않는 것
return stack.length > 0 ? 0 : 1
}