[LeetCode] Remove Outermost Parentheses - JavaScript

이은빈 EUNBIN·2021년 4월 26일
0
post-thumbnail

👩🏻‍💻 문제

LeetCode #1021 Remove Outermost Parentheses



👩🏻‍💻 풀이

var removeOuterParentheses = function(S) {
    let decomposition = [];
    let left = 0;
    let right = 0;
    let index = 0;
        
    for(let i = 0; i < S.length; i++) {
        if(S[i] === "(") {
            left++;
        } else if(S[i] === ")") {
            right++;
        }

        if(left === right) {
            let cut = S.slice(index, i+1);
            decomposition.push(cut);
            index = i+1;
        }
    }
    
    for(let i = 0; i < decomposition.length; i++) {
        decomposition[i] = decomposition[i].slice(1, -1);
    }
    
    return decomposition.join("");
};

프로그래머스 괄호 변환 보다는 덜 복잡한 문제인 것 같은데
확실히 비슷한 문제를 경험해 보니까 좀더 부담없이 접근할 수 있었던 것 같다..! 🥳



// 고수님의 풀이(1)
const removeOuterParentheses = (s, res = '', depth = 0) =>
  0 === s.length
    ? res
    : removeOuterParentheses(
        s.slice(1),
        res + (0 === depth || (1 === depth && ')' === s[0]) ? '' : s[0]),
        depth + ('(' === s[0] ? 1 : -1),
      );
// 고수님의 풀이(2)
const removeOuterParentheses = S => {
  let result = '';
  for (let [begin, end, depth] = [0, 1, 1]; end < S.length; end++) {
    if (S[end] === '(') depth++;
    else if (S[end] === ')') depth--;
    if (0 === depth) {
      result += S.slice(begin + 1, end);
      begin = end + 1;
    }
  }
  return result;
};
profile
Frontend Engineer & Value Creator

0개의 댓글