JAVASCRIPT/코딩테스트

프로그래머스 코딩테스트 레벨 1 - x만큼 간격이 있는 n개의 숫자[자바스크립트] 해석 및 답안

진짠 2023. 3. 23. 16:22
728x90
문제

정수 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

 

Array.prototype.fill() - JavaScript | MDN

fill() 메서드는 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채웁니다.

developer.mozilla.org

 

문제의 예시로 사용했던 2,5 로 예를 들면 [2,2,2,2,2]가 된다. 그리고 map() 함수를 이용하여 해당 인덱스+1의 값을 곱해서 [2,4,6,8,10]을 만드는 방식으로 코딩을 짠 분도 있었다.

 

이런 간단명료한 코딩을 볼 때 마다 여러 함수에 대한 이해도가 뛰어나다란 생각과 저런 다양한 함수를 프로젝트를 진행하면서 능숙하게 사용할 수 있다면 많은 도움이 되겠다는 생각이 들었다.

728x90