programmers/level1
[level1] - x만큼 간격이 있는 n개의 숫자도움말
태기의삶
2020. 7. 19. 12:58
문제 설명 :
함수 solution은 정수 x와 자연수 n을 입력받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
입력 및 출력
x | n | return |
2 | 5 | [2,4,6,8,10] |
4 | 3 | [4,8,12] |
-4 | 2 | [-4, -8] |
접근 방법 :
우선 n개를 지닌 리스트를 만들어야 하기 때문에, 배열에 담을 수 있는 변수 하나를 선언하고, for문으로 배열에 하나씩 push()를 하는데 그 값으로 x부터 x씩 증가해야 하기 때문에 i에 x를 곱하여 추가하는 로직으로 접근해보았다.
내가 짠 코드 :
function solution(x, n) {
var answer = [];
for(let i = 1; i <= n; i++){
answer.push(i * x);
}
return answer;
}
로직은 정말 단순하다.
더 좋은 방법이 궁금해서 다른 사람 풀이를 보았다.
다른 사람이 짠 인상 깊은 코드 :
function solution(x, n) {
return Array(n).fill(x).map((v, i) => (i + 1) * v)
}
엄청 간단하게 한 줄로 끝내셨다.
엄청난 현타가 밀려왔지만..😂
직접 해석을 한다면, n을 Array()를 통해서 배열의 크기가 5인 모든 항목에 undefined가 들어있는 배열을 만들고,
Array()는 그냥 배열로 만들어주는 메서드인 것 같다.
fill(x) 메서드를 통해서 모든 배열 안의 수를 x값으로 만들고, map()을 통해서 x에 인덱스를 곱한 수를 모두 반환하면 똑같이 x부터 x씩 증가하는 수가 반환되는 것을 볼 수 있다.
fill() 메서드 참고!