강의로 돌아가기
윤석규

자바스크립트 효율성 테스트 (코드있음)

처음 시도 코드

function solution(s) {
  return (function getResult(s) {
    if (s === '') return true;
    const firstValue = s[0];
    const finalValue = s[s.length - 1];
    if (firstValue === '\)' || finalValue === '\(') return false;
    return getResult(s.replace(/\(\)/, ''));
  })(s);
}

효율성에서 런타임에러 발생
그래서 정규표현식이 문제인가 해서

s.replace(/\(\)/, '')  --> s.split('\(\)').join('')

이렇게 변경해도 런타임에러가 발생.
그래서 그냥 갯수로 처리했으나 역시 런타임에러 발생 이유가 무엇이죠?

작성중인 코드―solution.js
1
2
3
4
5
6
7
8
9
10
function solution(s) {
  const SIZE = s.length;

  return (function getResult(index = 0, acc = 0) {
    if (index === SIZE) return acc;
    acc += s[index] === '(' ? 1 : -1;
    if (acc < 0) return acc;
    return getResult(index + 1, acc);
  })() === 0 ? true : false;
}
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.