2022. 10. 5. 11:10ㆍ기록/Programmers
- 목차
문제 설명
함수 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) {
let answer = [];
let i = 0;
for (i = 0; i < n; i++) {
answer.push(x);
x += answer[0];
}
return answer;
}
- 주어진 정수 x를 배열에 넣는다.
- x 에 배열의 첫 번째 요소를 더한다. (주어진 정수 x)
- 위 과정을 n 번 만큼 반복한다.
- x 부터 시작해서 x 씩 증가하는 숫자 요소를 n개 가진 배열이 리턴된다.
다른 사람의 문제 풀이
function solution(x, n) {
return Array(n).fill(x).map((v, i) => (i + 1) * v)
}
- n 만큼의 길이를 가진 배열을 만든다.
- 배열의 요소들을 x로 채운다.
- 배열의 요소들을 하나씩 꺼내서 [(인덱스 + 1) * x] 을 해주어 만들어진 새로운 배열을 리턴한다.
- x에 1, 2, 3, 4... 를 곱하기 때문에 x부터 시작해 x씩 증가하는 숫자가 된다.
리턴할 배열의 길이가 명확한 경우 Array(n) 을 통해 배열을 만드는 것이 간단한 것 같다.
function solution(x, n) {
var answer = [];
for (let i = 1; i <= n; i++) {
answer.push(x * i)
}
return answer;
}
- 배열에 [x * 인덱스]를 넣는다.
- 인덱스는 1부터 시작하고 1씩 증가하기 때문에 배열의 요소로 x 의 배수들이 들어간다.
- for 문은 n 번 반복되기 때문에 숫자 요소를 n개 가진 배열이 리턴된다.
나의 풀이와 비슷하지만 인덱스를 1부터 시작해서 배수를 만드는 데에 사용하였다.
반복문을 사용할 때에는 최대한 인덱스를 활용해야겠다.
function solution(x, n) {
return [...Array(n).keys()].map(v => (v + 1) * x);
}
- n 만큼의 길이를 가진 배열을 만든다.
- 배열의 key 값을 가져온다. key 값은 인덱스처럼 0부터 시작한다. (0, 1, 2, 3 ...)
- 배열의 key 값을 요소로 가진 새로운 배열을 만든다.
- 배열의 요소들을 하나씩 꺼내서 x 의 배수로 만들어 리턴한다.
map 함수의 인자인 인덱스를 사용하는 대신, keys() 로 만든 인덱스를 사용하였다.