문자열을 입력받아 문자열 내의 모든 괄호의 짝이 맞는지 여부를 리턴합니다.
let output = balancedBrackets('(');
console.log(output); // // -> false
output = balancedBrackets('()');
console.log(output); // --> true
const balancedBrackets = function (str) {
// 1. str을 배열로 만든다
// 2. 괄호의 모음 객체를 (열린 괄호 = 키, 닫힌 괄호 = 값) 만들어 각 괄호의 짝 비교를 하도록 한다.
// 3. 반복문으로 str 배열을 확인한다
// 4. 만약 요소값이 키값의 종류인 열린 괄호인 경우 빈 배열에 넣어 준다.
// 5. 요소값이 닫힌 괄호인 경우 괄호 모음 객체 중 빈 배열에 마지막으로 들어간 열린 괄호를 키로 가지는 값과 비교하여, 같으면 배열에 넣었던 열린 괄호를 지운다. 다르면 해당 닫힌 괄호도 빈 배열에 넣는다.
let verify = { "(" : ")", "{" : "}", "[" : "]" }
const aux = str.split('').reduce((ac, cv) => {
if (cv === verify[ac[ac.length - 1]]) {
ac.pop()
} else {
ac.push(cv)
}
return ac
}, [])
return aux.length === 0
}
stack을 이용했다는 점과 짝을 키와 값으로 설정해 두어 비교하는 식을 구현했다.