문제 소개
이번 글에서는 두 개의 숫자 m과 n을 입력받아, m의 처음 n개 자연수 배수로 구성된 배열을 생성하고 반환하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.
예를 들어 m = 6, n = 14가 주어지면, 함수는 6의 배수 중 첫 14개인 [6, 12, 18, ..., 84] 배열을 반환해야 합니다.
구현 방법
접근 방식은 매우 간단합니다. 1부터 n까지 반복하면서 각 반복마다 m에 현재 인덱스 i를 곱한 값을 결과 배열에 추가하면 됩니다.
코드 예제
const m = 6;
const n = 14;
const firstNMultiple = (m = 1, n = 1) => {
const res = [];
for(let i = 1; i <= n; i++){
const multiple = m * i;
res.push(multiple);
};
return res;
};
console.log(firstNMultiple(m, n));코드 설명
위 코드의 동작 원리를 단계별로 살펴보겠습니다.
1. 기본값 설정: 화살표 함수 firstNMultiple은 매개변수 m과 n에 기본값으로 1을 지정하여, 인자가 전달되지 않을 경우에도 오류 없이 동작하도록 합니다.
2. 빈 배열 초기화: 결과를 저장할 빈 배열 res를 선언합니다.
3. 반복문 실행: for 루프가 1부터 n까지 순회하며, 각 단계에서 m * i를 계산해 배수 값을 구하고 push() 메서드로 배열에 추가합니다.
4. 결과 반환: 반복이 완료되면 완성된 배열을 반환합니다.
출력 결과
[ 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84 ]
추가 팁: Array.from 활용하기
반복문 대신 ES6의 Array.from 메서드를 사용하면 더욱 간결하게 작성할 수 있습니다.
const firstNMultiple = (m = 1, n = 1) =>
Array.from({ length: n }, (_, i) => m * (i + 1));
console.log(firstNMultiple(6, 14));
// [ 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84 ]Array.from은 첫 번째 인자로 배열의 길이를 정의하고, 두 번째 인자의 콜백 함수로 각 요소의 값을 결정합니다. 인덱스 i가 0부터 시작하므로 i + 1을 곱해주어 1부터 n까지의 배수를 올바르게 계산할 수 있습니다.
마무리
이처럼 간단한 반복문 하나만으로도 특정 숫자의 처음 n개 배수 배열을 손쉽게 구성할 수 있습니다. 상황에 따라 전통적인 for 루프와 Array.from 같은 함수형 접근 방식 중 가독성이 좋은 방법을 선택하시면 됩니다.