[프로그래머스] 괄호 회전하기 (JS)

hhkim·2023년 8월 9일
0

Algorithm - JavaScript

목록 보기
95/188
post-thumbnail

풀이 과정

  1. 배열의 길이만큼 반복
  2. 문자열의 각 문자에 대해 반복
  3. 현재 문자가 스택 이전 마지막 요소와 매칭되는 닫는 괄호면 스택 pop
    아니면 현재 문자를 스택(배열)에 담기
  4. 1번의 각 반복을 마치고 스택에 남은 값이 없으면 결과 +1
  5. 1번의 각 반복을 마칠 때마다 문자열 회전: slice()

코드

function solution(s) {
  let result = 0;
  for (let i = 0; i < s.length; ++i) {
    const stack = [];
    for (const c of s) {
      const last = stack.at(-1);
      if (last === '(' && c === ')') stack.pop();
      else if (last === '[' && c === ']') stack.pop();
      else if (last === '{' && c === '}') stack.pop();
      else stack.push(c);
    }
    if (!stack.length) ++result;
    s = s.slice(1) + s[0];
  }
  return result;
}

0개의 댓글