내용 복습/알고리즘
프로그래머스 1단계 - x만큼 간격이 있는 n개의 숫자
jskim4695
2024. 1. 11. 10:36
function solution(x, n) {
var answer = [];
for(let i=1; i<=n; i++) {
answer.push(x*i)
}
return answer;
}
나는 이렇게 for문으로 풀었는데, 뭔가 더 좋은 풀이법이 있을 것 같아 다른사람의 풀이를 봤더니
function solution(x, n) {
return Array(n).fill(x).map((v, i) => (i+1) * v)
}
이렇게 짧은 코드로 나왔다.
array.fill.map을 체이닝해서 만든 로직인데 사실 fill이라는 배열 내장 메소드가 있는지도 처음 알았다.
fill()
arr.fill(value, start, end);
첫번째 인자인 value만 필수값이고 시작인덱스와 끝인덱스는 옵셔널이다.
map()
arr.map(callback(currentValue, index, array));
매개변수로 콜백함수를 받는데 3가지 인자를 가질 수 있다. index, array는 선택사항이다.
[1,2,3].map((v, i) => (v + i));
// 실행 결과 : [1, 3, 5]
위 코드에서 v는 배열의 각각 요소인 1,2,3을 가리키게 된다. i는 index를 나타내며 0, 1, 2가 될 것이다.
Array(n).fill(x)는 길이가 n이고 모든 요소가 x인 배열을 생성한다. 그 후 map() 함수를 사용, 배열의 각 요소를 수정한다.
map() 함수의 인자로 전달된 콜백함수는 배열의 각 요소에 대해 실행되며 현재 요소의 값을 나타내는 v와 인덱스 i를 인자로 받는다.
그리고 (i+1) * v 값은 배수를 나타낸다. i+1인 이유는 배열의 index가 0부터 시작하기 때문이다.