문자열을 입력받아 문자열 내의 모든 괄호의 짝이 맞는지 여부를 리턴해야 합니다.
- 괄호의 종류는 (, )만 고려합니다.
- 괄호는 먼저 열리고((), 열린만큼만 닫혀야()) 합니다.
- 빈 문자열을 입력받은 경우, true를 리턴해야 합니다.
- 모든 종류의 괄호((, ), {, }, [, ])가 포함된 문자열을 입력빋아 모든 괄호의 짝이 맞는지 여부를 리턴해 보세요.
let output = balancedBrackets('(');
console.log(output); // // -> false
output = balancedBrackets('()');
console.log(output); // --> true
let output = balancedBrackets('[](){}');
console.log(output); // --> true
output = balancedBrackets('[({})]');
console.log(output); // --> true
let output3 = balancedBrackets('[(]{)}');
console.log(output); // --> false
const balancedBrackets = function (str) {
let result = [];
let start = {
'(' : ')',
'{' : '}',
'[' : ']'
}
let finish = ')}]';
for(let i = 0; i < str.length; i++){
if(str[i] in start){
result.push(str[i]);
} else if(finish.includes(str[i])){
let top = result.pop();
let pair = start[top];
if(pair !== str[i]){
return false;
}
}
}
return result.length === 0;
};
프로그래머스 올바르 괄호 문제와 비슷합니다.
우선 제시된 괄호가 한정적이기 때문에 start, finish를 통해 미리 선언해주고,
만약 start 안에 str[i]가 존재한다면 빈 배열(result)에 push 해줍니다.
이후 위에서 부터 하나씩 pop()을 통해 뽑아냅니다.
pair를 통해 쌍이 맞는지 확인할 수 있고, 전부 뽑아냈을 때 길이가 0이라면 true를 반환해 문제를 해결할 수 있습니다.