✅ 문제 설명

✅ 접근 방법
👩🏻💻 코드
function solution(str) {
let answer = "";
let stack = [];
// ")"를 만났을 때 stack에서 "("를 찾을 때까지 pop해주기
// while문에서는 pop을 한 후에 "("와 비교하기 때문에 이미 stack에서 pop()메서드는 실행된 상태
for (let x of str) {
if (x === ")") {
while (stack.pop() !== "(");
} else stack.push(x);
}
// stack = ['E', 'F', 'L', 'M']
answer = stack.join("");
return answer;
}
let c = "(A(BC)D)EF(G(H)(IJ)K)LM(N)";
console.log(solution(c));
- 닫는 괄호 (
)
)를 만나면 여는 괄호(
를 만날 때까지 pop()
을 해준다.
- 닫는 괄호가 아니라면 계속
stack
에 push
!
- 그리고
answer
배열을 join
으로 묶어준다!
🤣 헷갈리는 점
while
문 내부에 코드가 따로 있지 않고 여는괄호를 만날 때까지 while
문이 계속 돌아간다.
- 그래서 여는괄호를 만났어도 이미
stack
에서는 제거된 상태로 확인한다는 부분이 자꾸 헷갈리는 것 같다ㅜㅜ
while
문 안에 있는 코드는 이미 실행이 된 상태에서 확인한다는 것을 기억하자!!