[Lv1]x만큼 간격이 있는 n개의 숫자

Creating the dots·2021년 11월 8일
0

Algorithm

목록 보기
34/65
post-custom-banner

프로그래머스

https://programmers.co.kr/learn/courses/30/lessons/12954

나의 풀이

  • x부터 x씩 더한 값들 n개를 요소로 갖는 배열(res)을 리턴해야한다.
  • 미리 배열 x에 x를 담아둔다.
  • res.length===n이고 이미 x가 요소로 있으므로 n이 1이 될때까지 다음을 반복한다.
  • res.push(x+=num)
function solution(x,n){
  let res = [x]; //결과 배열에 x 미리 담아두기
  const num = x; //x 복사해두기
  while(n>1){
    res.push(x += num);
    n--;
  }
  return res;
}

다른 사람의 풀이

  • Array(n).fill(x)
    길이가 n인 배열에 x를 요소로 채워놓는다.[x,x,x,...x].length===n
  • 반복해서 더하는 것을 곱셈으로 바꾸어 생각하기
    x = 1*x,x+x = 2*x,x+x+x = 3*x,x+x+x+x = 4*x
    따라서, map 메소드를 사용해 각 요소에 인덱스+1한 값을 곱해준다.
function solution(x,n){
  return Array(n).fill(x).map((v,i) => (i+1)*v) 
}

반복해서 더해주는 것을 풀어서 생각해보니 곱셈으로 바꾸어 표현할 수 있었다. 미리 n개의 x를 요소로 갖는 배열을 만들 생각은 못했는데, 짧고 간단한 풀이를 알게되었다.

profile
어제보다 나은 오늘을 만드는 중
post-custom-banner

0개의 댓글