입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
남은 문자만 출력한다.
입력
(A(BC)D)EF(G(H)(IJ)K)LM(N)
출력
EFLM
const solution = (str) => {
const stack = [];
for (let x of str) {
// 닫는 괄호를 만난다면, 여는 괄호를 만날때까지 stack.pop을 한다.
// stack.pop()이 여는 괄호라면 while문 종료.
if (x === ")") {
while (stack.pop() !== "(");
}
// 여는 괄호이거나, 문자면 무조건 stack에 push한다.
else stack.push(x);
}
return stack.join("");
};
const answer = solution("(A(BC)D)EF(G(H)(IJ)K)LM(N)");
console.log(answer); // EFLM