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

문제 링크

📩 문제 설명

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

입출력 예

xnanswer
25[2,4,6,8,10]
43[4,8,12]
-42[-4, -8]

제출 답안

function solution(x, n) {
    let answer = [];
    for (let i=0; i<n; i++) {
        answer.push(x + x*i);
    }
    
    return answer;
    
}

답안 설명

n개만큼 숫자가 존재해야하므로, for문을 n번 돌리도록 설정하였다. 반복문을 돌며 x씩 증가하는 x의 값을 answer에 push하였다. while문도 비슷하게 만들 수 있을 것 같다.


while문 사용

function solution(x, n) {
    let answer = [];
    let i = 0;
    while(answer.length !== n) {
        answer.push(x + (x*i));
        i++;
    }
    
    return answer;
}

다른 사람의 풀이

function solution(x, n) {
    return Array(n).fill(x).map((v, i) => (i + 1) * v)
}

n개 만큼의 배열을 만들어 x로 채우는데, 각각의 요소는 (해당 요소의 인덱스 + 1) * (해당 요소의 value === x)만큼 곱해서 다시 배열을 리턴하는 방법을 생각하지 못해서 놀랐다. Array().fill()과 같은 방법도 기억해두어야 겠다.


오늘의 메서드

Array()

매개변수가 1개이고 숫자인 경우 매개변수로 전달된 숫자를 length 값으로 가지는 빈배열을 생성한다.

let arr = new Array(2);
console.log(arr); //(2) [empty * 2]
console.log(arr.length); //2

Array.prototype.fill()

fill() 메서드는 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채운다.

arr.fill(value[, start [, end]])

  • value : 배열을 채울 값.
  • start(Optional) : 시작 인덱스, 기본 값은 0.
  • end(Optional) : 끝 인덱스, 기본 값은 this.length


0개의 댓글

Powered by GraphCDN, the GraphQL CDN