괄호문자제거(스택)
알고리즘 공부 간 기록이 필요한 문제들에 대한 정리를 기록하는 포스트 입니다.
1. 문제 요건
괄호와문자로 이루어진 문자열을 입력받고 괄호 사이에 들어가있는 단어를 모두 제거하라
2. 코드
function solution(s) {
let stack = []
for(let x of s) {
if(x === ")") {
while(stack.pop()!=="(");
} else {
stack.push(x);
}
}
return stack.join('')
}
let str = "(A(BC)D)EF(G(H)(IJ)K)LM(N)"
3. 결과정리
Javscript 에서 스택은 push, pop 을 이용하며 LIFO 만 잘 기억하자.
괄호의 경우 ”(“ 가 push 로 들어간 경우 ”)” 를 만났을때 pop 을 해주고 최종적으로 stack 에는 아무것도 없이 빠져있어야 정상괄호이다.