입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는
프로그램을 작성하세요.
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
남은 문자만 출력한다.
(A(BC)D)EF(G(H)(IJ)K)LM(N)
EFLM
여는괄호나 문자열이면 싹 다 stack에 넣고,
닫는 괄호를 만나면 이전에 있던 문자열+여는괄호까지 다 pop 해주면 된다.
function solution(str) {
let stack = [];
for (let x of str) {
// 닫는괄호면 여는괄호 pop할때까지 반복
if (x === ')') {
while (stack.pop() !== '(');
// 여는 괄호 or 문자열이면 push
} else stack.push(x);
}
return stack.join('');
}
solution('(A(BC)D)EF(G(H)(IJ)K)LM(N)');