프로그래머스 - 괄호 회전하기

Lumi·2021년 12월 7일
0

알고리즘

목록 보기
54/59
post-thumbnail
function solution(s) {
  let length = s.length;
  let point = 0;
  function search(str) {
    let arr = [];
    for (let i = 0; i < str.length; i++) {
      arr.push(str[i]);
      if (arr[arr.length - 1] === "]") {
        if (arr[arr.length - 2] === "[") {
          arr.pop();
          arr.pop();
        }
      } else if (arr[arr.length - 1] === ")") {
        if (arr[arr.length - 2] === "(") {
          arr.pop();
          arr.pop();
        }
      } else if (arr[arr.length - 1] === "}") {
        if (arr[arr.length - 2] === "{") {
          arr.pop();
          arr.pop();
        }
      }
    }
    if (arr.length === 0) {
      point++;
    }
  }
  s = s.split("");

  for (let i = 0; i < length; i++) {
    search(s);
    let temp = s.shift();
    s.push(temp);
  }
  return point
}

그렇게 많이 어렵게 느껴지지는 않았다.

검증을 하는 부분 즉 search함수 부분이 좀 비효율적이기는 하지만

그래도 뭐 나름 만족을 한다.

로직이 진행되는 과정은 간단하다.

search함수는 들어오는 배열의 괄호형태가 맞는지를 확인하고 처리를 해준다.

이후 search내부 변수의 배열에 값이 들어가 있지 않으면 괄호형태가 성공적으로 맞은 것이다.

그러기 떄문에 point변수를 증가시켜준다.

괄호의 이동또한 어렵지 않다.

앞에있는것을 뺴고 뒤에 넣어주면 된다.

  • 이부분도 한줄로 줄일수도 있다.

또한 search함수 부분의 검증하는 것도 간단하게 할 수가 있는데 일단 정답이 맞으니깐 ㅎㅎ 이상태로 두겠다.

profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글