프로그래머스 Lv.1 x만큼 간격이 있는 n개의 숫자

Lian Kim·2022년 9월 3일
0

coding-test

목록 보기
19/19

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


문제

문제 설명

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


제한 사항

  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.

입출력 예

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



풀이

나의 풀이

n번 실행되는 while문을 돌며 배열 answer에 push하고 num은 num에 x를 더해준 값으로 업데이트 시켜준다. (x, x+x, x+x+x, x+x+x+x ... 순으로 answer에 push됨)

function solution(x, n) {
    let answer = [];
    let num = x;
    while (answer.length < n) {
        answer.push(num);
        num += x;
    }
    return answer;
}

다른 사람들의 풀이

x를 따로 저장하여 업데이트 시켜줄 필요가 없었다.

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

Array.from
길이가 n인 배열을 만들어서 x에 인덱스+1을 곱한 값으로 mapping

function solution(x, n) {
  return Array.from({ length: n }, (val, idx) => (idx + 1) * x);
}



WIL

Array.from()

정적 메서드 Array.from()은 이터러블 또는 유사 배열 객체를 얕은 복사(shallow copy)하여 새로운 배열 인스턴스를 반환한다.

Array.from('foo') // -> [ 'f', 'o', 'o' ]
Array.from({ 0: '가', 1: '나', length: 2 }); // -> [ '가', '나' ]

Syntax

Array.from(obj [, mapFn[, thisArg]])

두 번째 인수로 map() 기능을 하는 콜백함수를 전달할 수 있다.

Array.from([1, 2, 3], x => x + x); // -> [2, 4, 6]
Array.from([1, 2, 3], (x, i) => x * i); // -> [0, 2, 6]

Examples

  • 유사 배열 객체
    length 값만 받아도, mapFn을 통해 인덱스의 값(value)으로 해당 인덱스(index)와 동일하게 줄 수 있다.
Array.from({ length: 5 }, (v, i) => i);
// [0, 1, 2, 3, 4]

  • arguments
    arguments도 유사 배열 객체다.
function f() {
  return Array.from(arguments);
}

f(1, 2, 3); // -> [1, 2, 3]

  • Sequence generator (range)
// Sequence generator function (commonly referred to as "range", e.g. Clojure, PHP, etc.)
const range = (start, stop, step) => Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step));

// Generate numbers range 0..4
range(0, 4, 1);
// [0, 1, 2, 3, 4]

// Generate numbers range 1..10 with step of 2
range(1, 10, 2);
// [1, 3, 5, 7, 9]

0개의 댓글