문제설명
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
제한 조건
- x는 -10000000 이상, 10000000 이하인 정수입니다.
- n은 1000 이하인 자연수입니다.
입출력 예
코드 설명
함수 선언부
function solution(x, n) {
이 코드는 solution이라는 이름의 함수를 선언합니다. 이 함수는 x와 n이라는 두 개의 매개변수를 받습니다.
변수 선언
var answer = [];
answer는 함수 내부에서 사용할 빈 배열입니다. 이 배열은 x의 배수를 담아 반환하는 데 사용됩니다.
반복문
for (let i = 1; i <= n; i++) {
for 반복문은 1부터 n까지 반복하면서 아래 코드를 실행합니다.
배열에 값 추가
answer.push(i * x);
answer 배열에 i * x를 추가합니다. 여기서 i는 반복문의 현재 반복 횟수를 나타내며, x는 함수의 첫 번째 매개변수로 전달된 숫자입니다. 따라서 i * x는 x의 배수가 됩니다. 이렇게 배열에 값을 추가하면 결국 x의 1배, 2배, 3배, ..., n배까지의 값을 담은 배열이 완성됩니다.
함수 반환
return answer;
answer 배열을 반환하여 함수가 끝납니다. 이 배열은 함수가 실행된 결과로, x의 배수를 담고 있습니다.
소스코드&결과
소스 코드
function solution(x, n) {
var answer = [];
for(let i = 1; i <= n; i++){
answer.push(i*x)
}
return answer;
}
실행 결과
다른 사람이 짠 코드
function solution(x, n) {
return Array(n).fill(x).map((v, i) => (i + 1) * v)
}
이 코드는 x와 n이라는 두 개의 매개변수를 받아, x의 배수를 n개 만큼 배열에 담아 반환하는 함수입니다.
Array(n) : Array(n)은 길이가 n인 빈 배열을 생성합니다. n개의 요소를 가지고 있지만, 요소들은 모두 undefined로 초기화됩니다.
.fill(x) : fill(x)는 배열의 모든 요소를 x로 채우는 메서드입니다. 이 경우, 앞서 생성한 빈 배열의 모든 요소를 x로 채웁니다. 즉, x값이 반복되는 배열이 만들어집니다.
.map((v, i) => (i + 1) * v) : map은 배열의 모든 요소에 대해 주어진 함수를 실행하고, 그 결과를 새로운 배열로 반환하는 메서드입니다. (v, i) => (i + 1) * v는 콜백 함수로서, 배열의 요소 v와 해당 요소의 인덱스 i를 받아 (i + 1) * v의 값을 반환합니다.
v : x로 채워진 배열의 각 요소인 x
i : 해당 요소의 인덱스 (0부터 시작)
따라서, v는 항상 x와 같은 값이고, (i + 1) * v는 x의 배수가 됩니다. 결과적으로, 인덱스 0부터 시작하여 1씩 증가하는 값에 x를 곱한 값들로 이루어진 배열이 반환됩니다.
이 코드를 통해 Array.fill에 대해 알게 되었습니다...!
'Coding Test > 프로그래머스' 카테고리의 다른 글
[JavaScript] 음양 더하기 (2) | 2023.07.24 |
---|---|
[JavaScript] 자릿수 더하기 (0) | 2023.07.24 |
[JAVA] 덧칠하기 (0) | 2023.07.22 |
[JAVA] 실패율 (0) | 2023.07.20 |
[JAVA] 카드 뭉치 (2) | 2023.07.19 |