ALGORITHM/Inflearn

자료구조(스택) - 2. 괄호문자제거

Harimad 2022. 2. 28. 16:58

문제

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

입력예제 1
(A(BC)D)EF(G(H)(IJ)K)LM(N)

출력예제 1
EFLM

 

 

풀이

반복문을 통해서 문자열 요소를 탐색한다.

문자열에서 소괄호중에 ( 인 경우에는 stack 배열에 push를 해주고 알파벳인 경우에도 push를 해준다.

소괄호가 ) 인경우에는 반복문을  )가 나올때까지 돌면서 pop을 해준다.

 

( 와 알파벳 문자는 push한다
) 인 경우에는 ( 가 나올때까지 pop을 해준다.
이런 조건으로 입력된 문자열을 반복순회하면 걸러내야할 문자들을 구할 수 있다.

 

 

코드

function solution(s){  
  let answer;
  let stack = [];
  for (let x of s) {
    if (x === '(') stack.push(x);
    else if (x === ')') {
      // while(true) {
      //   let tmp = stack.pop();
      //   if (tmp === '(') break;
      // }
      while(stack.pop() !== '('){} //위의 4문장과 같음
    } 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));

 

 

출처

 

자바스크립트 알고리즘 문제풀이(코딩테스트 대비) - 인프런 | 강의

자바스크립트(JavaScript)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 재미있게 풀 수 있는 기초 단계 문제부터 고급 알고리즘까지 단계별로 차근차근 배우도록 설계된 강좌입니다., - 강의

www.inflearn.com