const braket = function (str) {
const stack = [];
const open = {
'{': '}',
'[': ']',
'(': ')',
};
const close = '}])';
for (let i = 0; i < str.length; i++) {
if (str[i] in opener) {
stack.push(str[i]);
} else if (close.includes(str[i])) {
const top = stack.pop();
const pair = open[top];
if (pair !== str[i]) {
return false;
}
}
}
return stack.length === 0;
};
괄호는 먼저 열리고((), 열린만큼만 닫혀야()) 합니다.
if in 문 === 객체 일경우 예를들어 if(str[i] in opener) 라는 이프문을 만났을때
str[i] = 객체의 키를 가르키게 된다
있을경우 스택에 푸쉬한다 없을경우 클로저(close) 에 있는가 확인하후 있다면 스택에서
팝을 해온후 그것의 값을 stri 와 비교해 같지않다면 false가된다 같다면 오프너와 클로저가 있기때문에 트루를 반환한다