Algorithm

[CodeKata] 프로그래머스 : 3.17(수), 짝지어 제거하기

ttaeng_99 2021. 3. 17. 14:23
반응형

🥋 Ooooth!! (Level 2) : 짝지어 제거하기

 

🧮 풀이

function solution(s) {
  let stack = [];
  for (let str of s) {
    if (stack[stack.length-1] === str) {
      stack.pop()
    }
    else {
      stack.push(str)
    }
  }
  return stack.length === 0 ? 1 : 0;
}
  1. stack은 말 그대로 스택이다. s(문자열)을 순회하면서, stack 제일 끝의 글자와 같은지 여부에 따라 push / pop 을 결정한다.
  2. 반복문으로 s(문자열)을 순회한다. 이 글자가 stack[stack.length-1] 글자와 같다면 stack 제일 끝을 pop() 한다.
  3. 아니라면, 현재 글자를 stack에 push() 하여 쌓아준다.
  4. 짝지어 제거가 가능하다면 stack이 비어있을 것이다. 이를, 삼항연산자로 확인하여 맞다면 1, 아니면 0을 반환한다.

 

🖇 리뷰

단순화라고 내 나름의 용어를 정의하고싶다. 문제 그대로의 구현에 충실한 나머지, 너무 많은 반복문을 사용하여 효율성에서 탈락했다.

Stack, 동적 프로그래밍 등 기본적인 알고리즘 체계를 적용할 수 있는지 항상 고민해야겠다.

반응형