<괄호문자제거>
: 입력한 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성한다.
- 앞에서 배운대로 하면 된다.
- while문에 들어가는 조건 한 번 이해해보자. while(stack.pop() !== '(');라는 코드가 있다면, (는 pop이 될까 안될까? 정답은 (이 pop이 된다. 그 이유는 pop은 스택에서 자료를 하나 빼내는 함수이므로, 저 조건식에서는 먼저 pop한 후 비교를 하게 된다.
<script> function solution(s){ let answer; let stack=[]; for(let x of s){ if(x===')'){ while(stack.pop()!=='('); } else stack.push(x); } answer=stack.join(''); return answer; } let str="(A(BC)D)EF(G(H)(IJ)K)LM(N)"; console.log(solution(str)); </script>
)를 제외한 것들은 다 push하고, )를 만나면 )랑 세트인 (까지 pop해야 겠다고 생각하고 코드를 짰는데 정작 pop하는 조건을 짜지 못했다. 언제쯤이면 능수능란해지려나.