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;
};