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

6426 단어 Level 2Level 2

문제

괄호 회전하기 https://programmers.co.kr/learn/courses/30/lessons/76502

해결

스택을 이용하기 때문에 O(n), 배열의 길이만큼 탐색해야 하기 때문에 총 O(n^2)입니다.
배열의 최대 길이가 1000 이기 때문에 완전탐색을 이용해 해결했습니다.

코드

function solution(s) {
  s = s.split("");
  let tc = s.length - 1;
  let answer = 0;

  while (tc--) {
    const stack = [];
    for (let i = 0; i < s.length; i++) {
      stack.push(s[i]);

      if (
        (stack[stack.length - 2] === "(" && stack[stack.length - 1] === ")") ||
        (stack[stack.length - 2] === "{" && stack[stack.length - 1] === "}") ||
        (stack[stack.length - 2] === "[" && stack[stack.length - 1] === "]")
      ) {
        stack.pop();
        stack.pop();
      }
    }

    if (stack.length === 0) answer++;

    const temp = s.shift();
    s.push(temp);
  }

  return answer;
}

좋은 웹페이지 즐겨찾기