x만큼 간격이 있는 n개의 숫자 (연습문제 Lv1 / JS)
코테/프로그래머스

x만큼 간격이 있는 n개의 숫자 (연습문제 Lv1 / JS)

반응형

https://programmers.co.kr/learn/courses/30/lessons/12954?language=javascript.     

문제해석

x값의 배수를 n번 만큼 배열에 대입하는 문제입니다.

Lv1 인만큼 쉬운문제이지만 다양한 풀이가 있고 그 다양한 풀이에서 배울점은 정말 많은 것 같습니다.

 

 

코드

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

보통 위 코드로 문제를 풀곤 하지만 아래 코드 아이디어가 너무 좋았습니다.

배열을 만들고 

그 배열을 fill 매서드를 이용해 값을 채워놓고

map을 이용해 배열 인자 각각 곱해주는 방식 입니다. 

여기서 보통 map을 사용할 때 input 값을 하나만 이용해서 주로 사용하는데 2개의 input 값을 사용하게 되면

2번째 input 값은 배열의 index의 값이 됩니다.

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

 

 

또 아래 코드는 Array를 통해 n의 수만큼 Spread 문법으로 null 값으로 채워 넣게 되고

keys 매서드를 사용하면 null이 0부터 차례대로 자연수가 채워지게 됩니다.

여기서 map을 사용하여 각각의 값을 곱해주게 됩니다.

 

[null, null, null] => [0, 1, 2] => [4, 8, 12]

function solution(x, n) {
    return [...Array(n).keys()].map(v => (v + 1) * x);
}

 

keys라는 매서드는 처음 알았는데 사용하면 어떠한 배열의 값이라도 0부터 차례대로 숫자를 대입하는 메서드 입니다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/keys

반응형