프로그래머스 올바른 괄호 자바스크립트

버건디·2023년 6월 30일
0

프로그래머스

목록 보기
55/66
post-thumbnail

문제 링크


- 내 풀이 (효율성 테스트 실패)

function solution(s) {
  let splitS = s.split("");
  let stack = [];

  for (let i = 0; i < splitS.length; i++) {
    stack.push(splitS[i]);

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

  return stack.length === 0 ? true : false;
}

문자열로 풀려고 하니, 효율성 테스트에서 실패를 했다.

- 올바른 풀이

function solution(s) {
  let stackCount = 0;

  for (let i = 0; i < s.length; i++) {
    s[i] === "(" ? (stackCount += 1) : (stackCount -= 1);

    if (stackCount < 0) {
      return false;
    }
  }

  return stackCount === 0 ? true : false;
}

문자열이 아닌 숫자로 만들어주어서, "(" 일때 1을 더해주고 ")"일때 1을 빼주어서

마지막 stackCount 가 0이라면 true를, 그게 아니라면 false를 리턴해준다.

그리고 반복문 내에서 stackCount가 0보다 작아졌을때는 ")"이 먼저 등장한 것이므로, false를 리턴해준다.

또한 splitS로 문자열 배열로 만들어서 반복문을 돌렸는데, 그렇게 해주어도 효율성 테스트에서 실패가 나왔다.

문자열일때는 그냥 문자열 자체를 반복문으로 돌려주는게 나은거 같다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글

관련 채용 정보