과거 프로그래밍 자료들/코딩테스트

[자바스크립트] 프로그래머스 - x만큼 간격이 있는 n개의 숫자

평부 2022. 6. 22. 17:31

* 출처

https://programmers.co.kr/learn/courses/30/lessons/12954?language=javascript 

 

코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자

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

programmers.co.kr

 

문제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
* 문제
함수 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) { //x = 시작값 및 증가할 값, n은 몇 개를 출력할 지
    var answer = []; //값을 넣을 배열
    return answer; //배열 형식으로 출력
}
cs

 

 

풀이

- push() 메서드는 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환합니다.

1
2
3
4
5
6
7
function solution(x, n) {
    var answer = [];
    for(let i=1; i<n+1; i++) { //i=1부터 시작해야 함, n만큼 출력하기 위해 i<n+1 사용
        answer.push(x*i); //push는 배열의 끝에 값을 추가하는 
    }
    return answer;
}
cs

 

다른 풀이

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

- map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.

1
2
3
4
5
6
7
8
9
function solution(x, n) {
    return Array(n).fill(x).map((v, i) => 
    //i = [0, 1, 2, 3, 4]
   //v = [2, 2, 2, 2, 2]
             (i+1)*v                  
    )
}
 
 
cs