[Lv1] x만큼 간격이 있는 n개의 숫자

이말감·2022년 8월 11일
0

Programmers

목록 보기
23/32

프로그래머스 Lv1 x만큼 간격이 있는 n개의 숫자

문제

링크

풀이

function solution(x, n) {
    let answer = [];
    for (let i = 1; i < n+1; i++) {
        answer.push(x * i);
    }
    return answer;
}

간단하게 answer이라는 배열을 만들고, 반복문을 이용해서 x * i한 값을 배열에 push 해주었다.

새로운 풀이

function solution(x, n) {
    const answer = new Array(n).fill(x).map((a, idx) => a + a * idx);
    return answer;
}
  1. 배열 생성
  • 단일 매개변수 배열 생성자
    • 배열을 생성자와 하나의 숫자 매개변수로 생성할 수 있다.
    • length가 매개변수이고, 길이만큼 빈 슬롯을 가진 배열이다.
    • new Array(length); // length 만큼 빈 슬롯을 가진 배열 `
  1. 배열 채우기
  • Array.prototype.fill()
    • fill() 메서드는 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채운다.
arr.fill(value[, start[, end]])
// value : 배열을 채울 값
// start : 시작 인덱스, 기본 값은 0
// end : 끝 인덱스, 기본 값은 this.length

let arr = [1,2,3,4];
arr.fill(1);
console.log(arr); // [1,1,1,1]
  1. map() 사용
    map을 이용해서 반복문을 돌렸다.
arr.map(callback(currentValue[, index[, array]])[, thisArg])
// callback : 새로운 배열 요소를 생성하는 함수
// 		- currentValue : 처리할 현재 요소
// 		- index : 처리할 현재 요소의 인덱스
// 		- array : map()을 호출한 배열. (여기서는 arr)
// thisArg : callback을 실행할 때 this로 사용되는 값
const answer = new Array(n).fill(x).map((a, idx) => a + a * idx);
  1. new Array(n) 으로 n개의 원소가 있는 배열 생성
  2. fill(x)로 배열의 모든 원소를 x로 채움
  3. map((a, idx) => a + a * idx)으로 배열의 모든 원소를 돌면서 a + a * idx 값으로 할당
profile
전 척척학사지만 말하는 감자에요

0개의 댓글