본문 바로가기
자바스크립트(javascript)

[프로그래머스 / 코딩테스트연습] x만큼 간격이 있는 n개의 숫자

by 지 요니 2023. 4. 10.
🐸 문제 설명

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

🐸 제한 조건
  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.
🐸 입출력 예
x n answer
2 5 [2,4,6,8,10]
4 3 [4,8,12]
-4 2 [-4, -8]

 

🐸 나의 문제 풀이
function solution(x, n) {
  var answer = [];
  for (let i = 1; i <= n; i++) {
    answer.push(x * i);
  }
  return answer;
}

x씩 증가 => 즉, x의 배수들로 구성된 배열!

 

🐸 다른사람 문제 풀이

1)

function solution(x, n) {
    return Array(n).fill(x).map((v, i) => (i + 1) * v)
}

n 크기의 배열을 만들고, x로 이 배열을 채운 뒤, 배열의 각 요소에 콜백 함수를 실행하는 .map을 이용

map을 사용할 때 2개의 input 값을 사용하게 되면 2번째 input 값은 배열의 index의 값을 의미함

2)

function solution(x, n) {
    return [...Array(n).keys()].map(v => (v + 1) * x);
}

 Array를 통해 n의 수만큼 Spread 문법으로 null 값으로 채워 넣게 되고 keys 매서드를 사용하면 null이 0부터 차례대로 자연수가 채워짐. 이후  map을 사용하여 각각의 값을 곱해주면 됨!

 

 

🐸 메소드
더보기
arr.fill(value[, start[, end]])
  • fill() : 배열의 start index부터 end index 전까지(end index는 미포함) value값으로 채워주는 함수
    • value: 배열에 채울 값을 지정
    • start: value 값을 채울 배열의 시작 index(default: 0)
    • end: value 값을 채울 배열의 종료 index(default: 배열의 길이)

 

arr.keys()
  • key(): 배열의 각 인덱스를 키 값으로 가지는 새로운 Array Iterator 객체를 반환하는 함수
    • 즉, 어떠한 배열의 값이라도 0부터 차례대로 숫자를 대입하는 메서드 

 

 

댓글