알고리즘

괄호문자제거(스택)

살다보니개발자 2022. 12. 1. 17:31

입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.

 

입력예제 1

(A(BC)D)EF(G(H)(IJ)K)LM(N)

 

출력예제 1

EFLM

 

function solution(s) {
  let answer;
  let stack = [];    //스택 배열 생성

// for of으로 배열 요소 반복문 사용 
  for (let x of s) {
  // 만약 x 가 ")" 라면
    if (x === ")") {
    
    // stack.pop() 이 "(" 가 될때까지 while문을 사용해 stack.pop()으로 stack 배열 마지막 요소 제거  
      while (stack.pop() !== "(");
    
    } 
    else stack.push(x); // x가 ")"이 아니라면 stack 배열에 x 요소 삽입
  }

  answer = stack.join(''); // stack 배열 join() 사용해 스트링화

  return answer;
}

let str = "(A(BC)D)EF(G(H)(IJ)K)LM(N)";
console.log(solution(str));