문자열을 입력받아 문자열 내의 모든 괄호의 짝이 맞는지 여부를 리턴해야 합니다.
let output = balancedBrackets('(');
console.log(output); // // -> false
output = balancedBrackets('()');
console.log(output); // --> true
우선 내가 작성한 코드는 아래와 같다.
스택을 사용한 것인데, '(' 모양과 ')'모양을 각각 변수로 지정해주는 것으로 시작을 하였다.
for문을 사용해서 입력받는 문자열의 길이만큼 반복을 해서 '(' 모양이 있으면 stack에 넣어준다.
만약 반대 모양인 ')'이 있다면, stack에서 하나씩 빼준다.
const balancedBrackets = function (str) {
const stack = [];
const front = '(';
const back = ')';
for (let i = 0; i < str.length; i++) {
if (str[i] === front) { stack.push(str[i]); }
else if (str[i] === back) {
const popped = stack.pop();
if (popped !== front) { return false; }
}
}
return stack.length === 0;
};