[javascript알고리즘] 괄호 문자 제거

이아현·2023년 8월 3일
0

코딩테스트

목록 보기
27/31
post-thumbnail

✅ 문제 설명

✅ 접근 방법

  • stack을 이용한다!

👩🏻‍💻 코드

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()을 해준다.
  • 닫는 괄호가 아니라면 계속 stackpush!
  • 그리고 answer배열을 join으로 묶어준다!

🤣 헷갈리는 점

  • while문 내부에 코드가 따로 있지 않고 여는괄호를 만날 때까지 while문이 계속 돌아간다.
    • 그래서 여는괄호를 만났어도 이미 stack에서는 제거된 상태로 확인한다는 부분이 자꾸 헷갈리는 것 같다ㅜㅜ
    • while문 안에 있는 코드는 이미 실행이 된 상태에서 확인한다는 것을 기억하자!!
profile
PM을 지향하는 FE 개발자 이아현입니다 :)

0개의 댓글

Powered by GraphCDN, the GraphQL CDN