프로그래머스 코딩테스트 레벨 1 - x만큼 간격이 있는 n개의 숫자[자바스크립트] 해석 및 답안
문제
정수 x와 자연수 n을 입력받아 x부터 시작하여 x씩 증가하는 숫자가 n개 있는 리스트를 리턴하는 문제이다.
예를 들어 x,n 으로 2,5를 입력받으면 2부터 시작하여 2씩 증가하는 숫자 5개인 [2,4,6,8,10] 을 리턴하면 된다.
제한조건
x는 -10000000 이상, 10000000 이하이고 n은 1000이하의 자연수이다. 딱히 신경 써서 코딩하지 않았다.
답
function solution(x, n) {
var answer = []; //리턴시킬 배열
for(let i=1;i<=n;i++) { //배열의 크기는 n이기 때문에 for문으로 반복횟수를 설정함
answer.push(x*i); //x부터 시작하여 차례대로 x만큼 증가하도록 곱하기를 한 뒤 값을 넣어주었다.
}
return answer;
}
x의 수만큼 차례대로 증가하는 수를 표현할 때, for문을 사용하여 차례대로 숫자를 곱해서 표현할 수 있으면 그 외에는 어려울 것이 없었다.
다른 사람의 풀이
for문을 사용해 기본적인 방법으로 푸는 것도 좋지만 자바스크립트가 제공하는 여러 함수를 사용하여 풀 수 있으면 추후에 코딩을 할 때도 도움이 돼서 좋다고 생각한다.
그런 의미에서
Array(n).fill(x).map((v, i) => (i + 1) * v)
이런 형태의 코딩은 어떤 의미로 사용했는지 짚고 가는것도 좋겠다고 생각했다.
먼저, Array(n)로 n크기의 리스트를 생성한 뒤 fill()을 이용하여 배열 값을 채운다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
문제의 예시로 사용했던 2,5 로 예를 들면 [2,2,2,2,2]가 된다. 그리고 map() 함수를 이용하여 해당 인덱스+1의 값을 곱해서 [2,4,6,8,10]을 만드는 방식으로 코딩을 짠 분도 있었다.
이런 간단명료한 코딩을 볼 때 마다 여러 함수에 대한 이해도가 뛰어나다란 생각과 저런 다양한 함수를 프로젝트를 진행하면서 능숙하게 사용할 수 있다면 많은 도움이 되겠다는 생각이 들었다.