알고리즘/프로그래머스

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

meteorqz6 2024. 7. 3. 21:05

문제 설명

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

 

제한 조건

  • x는 -10000000 이상, 10000000 이하인 정수입니다.

입출력 예 

x n answer
2 5 [ 2, 4, 6, 8, 10 ]
4 3 [ 4, 8, 12 ]
- 4 2 [ - 4, - 8 ]

 

< 나의 풀이 >

function solution(x, n) {
    let x1 = x;
    let arr = [];

    for( let i = 0 ; i < n ; i++ ){
        arr.push(x);
        x += x1;
    }

    return arr;
}

 

처음 이 문제를 봤을 때 나는 for 문만 떠올라서 for 문으로 코드를 작성했다 ༼ಢ_ಢ༽

 

< 다른 사람의 풀이 > 

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

 

 

 

길이가 n인 배열을 생성하고 x로 배열을 채운다. 

각 요소 v와 해당 인덱스 i에 대한 새로운 값을 계산해서 배열을 반환한다.

( 코드에서 v는 x이다. ) 

 

ex ) x = 2, n = 5

  • [ 2, 2, 2, 2, 2 ]
  • 현재 v는 2이다. 
  • i = 0, ( i + 1 ) * v = 2
  • i = 1, ( i + 1 ) * v = 4
  • i = 2, ( i + 1 ) * v = 6
  • i = 3, ( i + 1 ) * v = 8
  • i = 4, ( i + 1 ) * v = 10
  • [ 2, 4, 6, 8, 10 ]

[ 추가 학습 ]  

 

const numbers = [1, 2, 3, 4];
const squared = numbers.map(num => num * num);
console.log(squared); // [1, 4, 9, 16]

 

const numbers = [10, 20, 30];
const indexed = numbers.map((num, index) => num * index);
console.log(indexed); // [0, 20, 60]