프로그래머스 | 숫자의 표현

Autumn·2021년 4월 1일
0

알고리즘

목록 보기
6/6
post-thumbnail

문제 바로가기

걸린 시간: 55분
결과: 정확성 테스트 모두 통과 / 효율성 테스트 모두 실패


코드

function solution(n) {
  let count = 1;
  const nArray = [];
  
  for(let i = 1; i <= n; i++) {
    nArray.push(i);    
  }
  
  while(nArray.length >= n / 2) {
    const copied = [...nArray];
    copied.reduce((prev, curr, i, arr) => {
      if(prev >= n) {
        copied.splice(i + 1)
        if(prev === n) count++
      }
      return prev + curr
    }, 0)
    nArray.shift();
  }
  
  return count;
}

원인 찾기

for문이 문제일까 while문이 문제일까 고민했는데 shiftspread operator가 문제였던 것 같다. shiftpush, pop에 비해 성능이 안좋다는 건 알고 있었는데 spread operator는 생각지도 못했네... 개선해서 다시 풀어봐야겠다.


다른 풀이법

이브는 재귀로 풀었다. 신기함... 카일도 뭔가 엄청 간단하게 풀음

profile
한 발짝씩 나아가는 중 〰 🍁 / 자잘한 기록은 아래 🏠 아이콘에 연결된 노션 페이지에 남기고 있어요 😎

0개의 댓글