정수 n
과 k
가 주어졌을 때, 1 이상 n
이하의 정수 중에서 k
의 배수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
n
≤ 1,000,000k
≤ min(1,000, n)n | k | result |
---|---|---|
10 | 3 | [3, 6, 9] |
15 | 5 | [5, 10, 15] |
입출력 예 #1
입출력 예 #2
const solution = (n, k) =>
Array(n).fill(1).map((x, y) => x + y).filter(a => a % k === 0);
/*
내가 처음 작성한 코드이다.
이전에 'LV.0 짝수는 싫어요' 문제를 풀면서 공부했던 방식으로 풀었더니 간략하게 작성할 수 있었다.
1. Array(n).fill(1) 길이가 n인 배열을 생성하고 모든 요소를 1로 채운다.
예를 들어, n이 10이라면 [1, 1, 1, 1, 1, 1 ,1 ,1 ,1 ,1]와 같은 배열이 생성된다.
2. map((x,y) => x + y) 각 요소에 인덱스 값을 더하여 새로운 배열을 생성한다.
인덱스 값은 0부터 시작하므로 첫 번째 요소에는 인덱스 값인 0이 더해지고 두 번째 요소에는
인덱스 값인 2가 더해지는 식으로 진행된다.
3. filter(a => a % k === 0) : 이 부분은 k로 나누어 떨어지는 수만 필터링하여 새로운 배열을 반환한다.
여기서 % 연산자는 나머지를 구하는 연산자이다. a % k === 0 조건은 a가 k의 배수일 때만 참(true)이다.
따라서 입력값이 어떤 수든 주어진 범위 내에서 'k'의 배수가 오름차순으로 담긴 배열을 반환한다.
*/
const solution = (n, k) => {
let arr = [];
for(let i = 1; i <= n; i+=1) {
if(i % k === 0) {
arr.push(i);
}
}
return arr;
}
/*
for문을 사용하여 작성해주었다.
1. 빈 배열 arr를 생성한다.
2. 1부터 n까지 반복하는 for문을 시작한다.
3. 현재 숫자(i)가 k로 나누어 떨어지는지 확인 후 (i % k === 0) 나누어 떨어진다면,
그 숫자는 k의 배수이므로 배열에 추가(push)한다.
4. 위 과정을 모든 숫자에 대해 반복한 후, 최종적으로 생성된 배열(arr)를 반환한다.
*/