티스토리 뷰

알고리즘/코딩테스트 공부

6-2 괄호문자제거(스택)

YG - 96년생 , 강아지 있음, 개발자 희망 2021. 12. 10. 08:00

문제

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

풀이

function solution(s) {
  let answer = "";
  let stack = [];
  for (let x of s) {
    if (x === ")") {
      while (stack.pop(x) !== "(");
    } else stack.push(x);
  }
  //console.log(stack);
  answer = stack.join("");
  return answer;
}

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

" ) " 를 만났을 때 while 문으로 (이 나올때 까지 stack을 pop 시킵니다. ( 삭제 ) <문자열> ( 삭제 ) 그렇게한다면 () 사이에 있는 문자만 배열에 남게 되어 정답을 얻었습니다.

다른 풀이

function solution(s) {
  let answer = "";
  let stack = [];
  for (let x of s) {
    if (x === "(") stack.push(x);
    else if (x === ")") stack.pop();
    console.log(stack);

    if (stack.length === 0 && x !== ")" && x !== "(") answer += x;
  }
  return answer;
}

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

( , ) 를 push 와 pop을 이용해 stack.length를 탐색해 문제를 풀었습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함