본문 바로가기
Algorithm/JavaScript

[스택] 괄호 문자 제거

by _sweep 2021. 12. 20.

자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다.

 

 

 

 

📋 문제

입력된 문자열에서 소괄호 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력한다.

만약 입력된 문자열이 (AB(C)D)E(F)라면 출력은 E가 된다.

 

👉 입력

첫 번째 줄에 길이가 100을 넘지 않는 문자열이 입력된다.

 

 

👈 출력

괄호 사이의 모든 문자를 지우고 남은 문자들을 출력한다.

 

 

📝 풀이

 

function solution(s) {
    let answer;
    let stack = [];

    for (const i of s) {
        if (i === ")") {
            while (stack.pop() !== "(");
        }
        else stack.push(i)
    }
    answer = stack.join('')
    return answer;
}

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

 

주어진 문자열 s의 각 문자를 순회한다.

문자가 닫는 괄호 ")"가 아닐 경우 stack에 모두 넣는다.

문자가 닫는 괄호 ")"일 경우 여는 괄호 "("가 나올 때까지 stack에서 문자들을 빼낸다.

 

순회가 끝나면 answer에는 처리 과정을 거친 문자들이 배열의 원소 형태로 들어있다.

출력은 문자열의 형태이므로 이들을 join()해 문자열을 출력한다.

 

 

 

 

 

댓글