[Javascript] LV.0 배열 만들기 1

은비·2023년 8월 27일
1

Programmers_CodingTest

목록 보기
33/72
post-thumbnail

문제 설명

정수 n과 k가 주어졌을 때, 1 이상 n이하의 정수 중에서 k의 배수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.


제한사항

  • 1 ≤ n ≤ 1,000,000
  • 1 ≤ k ≤ min(1,000, n)

입출력 예

nkresult
103[3, 6, 9]
155[5, 10, 15]

입출력 예 설명

입출력 예 #1

  • 1 이상 10 이하의 3의 배수는 3, 6, 9 이므로 [3, 6, 9]를 return 합니다.

입출력 예 #2

  • 1 이상 15 이하의 5의 배수는 5, 10, 15 이므로 [5, 10, 15]를 return 합니다.

✍ SOLUTION1

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'의 배수가 오름차순으로 담긴 배열을 반환한다.
*/

✍ SOLUTION2

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)를 반환한다.
*/

출처 : 프로그래머스 스쿨 | 코딩테스트 연습

0개의 댓글