함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
정수 x
가 양수이면 값이 증가하는 형태를 보이고, 음수이면 감소하는 형태, 0이면 0을 유지하는 형태의 배열을 리턴한다. 예를 들어, n
이 3일 때 x
가 -1이면 음수이고, x
는 -1부터 시작해 -1씩 증가하므로 -1, -2, -3
과 같이 감소하는 형태를 보인다.
solution 1
은 next
값을 선언해주고 초기값으로 x
를 할당했다. for문
을 순회하면서 answer
배열에 next
값을 push
해주고 next += x
를 통해 값을 증가시킨다.
solution 2
는 Array.from()
을 이용하여 배열을 만들었다. 첫 번째 인수로 유사배열객체(arrayLike) 혹은 반복 가능한 객체, 두 번째 인수로 배열의 모든 요소에 대해 호출할 맵핑 함수, 세 번째 인수로는 맵핑 함수를 실행할 때 this
로 사용할 값을 넣어준다. answer
는 n
의 길이를 가지므로 { length: n }
으로 길이가 n
인 유사배열 객체를 넣어주고, 배열의 모든 요소에 대해서 x + (i * x)
값을 맵핑한다.
아래의 test1, test2
는 같은 결과를 보여준다.
const x = 1;
const n = 5;
const test1 = Array.from({ length: n }, (_, i) => x + i * x);
const test2 = Array.from({ length: n }).map((_, i) => x + x * i);
console.log('test1:', test1); // test1: [ 1, 2, 3, 4, 5 ]
console.log('test2:', test2); // test2: [ 1, 2, 3, 4, 5 ]
// solution 1
function solution(x, n) {
const answer = [];
let next = x;
for (let i = 0; i < n; i++) {
answer.push(next);
next += x;
}
return answer;
}
// solution 2
function solution(x, n) {
const answer = Array.from({ length: n }, (_, i) => x + i * x);
console.log(answer);
return answer;
}
solution(2, 5); // [2, 4, 6, 8, 10]
solution(-2, 5); // [ -2, -4, -6, -8, -10 ]