-
[level1] - x만큼 간격이 있는 n개의 숫자도움말programmers/level1 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() 메서드 참고!
'programmers > level1' 카테고리의 다른 글
[level1] - 평균 구하기 (0) 2020.07.21 [level1] - 짝수와 홀수 (0) 2020.07.20 [level1] 핸드폰 번호 가리기 (0) 2020.07.18 [level1] - 제일 작은 수 제거하기 (0) 2020.07.14 [level1] - 자연수 뒤집어 배열로 만들기 (0) 2020.07.04