-
[CodeKata] 프로그래머스 : 3.17(수), 짝지어 제거하기Algorithm 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; }
- stack은 말 그대로 스택이다. s(문자열)을 순회하면서, stack 제일 끝의 글자와 같은지 여부에 따라 push / pop 을 결정한다.
- 반복문으로 s(문자열)을 순회한다. 이 글자가 stack[stack.length-1] 글자와 같다면 stack 제일 끝을 pop() 한다.
- 아니라면, 현재 글자를 stack에 push() 하여 쌓아준다.
- 짝지어 제거가 가능하다면 stack이 비어있을 것이다. 이를, 삼항연산자로 확인하여 맞다면 1, 아니면 0을 반환한다.
🖇 리뷰
단순화라고 내 나름의 용어를 정의하고싶다. 문제 그대로의 구현에 충실한 나머지, 너무 많은 반복문을 사용하여 효율성에서 탈락했다.
Stack, 동적 프로그래밍 등 기본적인 알고리즘 체계를 적용할 수 있는지 항상 고민해야겠다.
반응형'Algorithm' 카테고리의 다른 글
[CodeKata] 프로그래머스 : 3.20(토), 점프와 순간이동 & 영어 끝말잇기 (0) 2021.03.20 [CodeKata] 프로그래머스 : 3.18(목), 배달 / [이론] Dijkstra Algorithm (0) 2021.03.18 [CodeKata] 프로그래머스 : 3.13(토), 피보나치 수 & 행렬의 곱셈 (0) 2021.03.13 [CodeKata] 프로그래머스 : 3.11(목), 최대값과 최소값 & 최소값 만들기 (0) 2021.03.11 [CodeKata] 프로그래머스 : 3.10(수), 이진 변환 반복하기 (0) 2021.03.10