반응형
https://programmers.co.kr/learn/courses/30/lessons/12954?language=javascript.
문제해석
x값의 배수를 n번 만큼 배열에 대입하는 문제입니다.
Lv1 인만큼 쉬운문제이지만 다양한 풀이가 있고 그 다양한 풀이에서 배울점은 정말 많은 것 같습니다.
코드
function solution(x, n) {
var answer = [];
for (let i = 1; i <= n ; i++){
answer.push(x*i)
}
return answer;
}
보통 위 코드로 문제를 풀곤 하지만 아래 코드 아이디어가 너무 좋았습니다.
배열을 만들고
그 배열을 fill 매서드를 이용해 값을 채워놓고
map을 이용해 배열 인자 각각 곱해주는 방식 입니다.
여기서 보통 map을 사용할 때 input 값을 하나만 이용해서 주로 사용하는데 2개의 input 값을 사용하게 되면
2번째 input 값은 배열의 index의 값이 됩니다.
function solution(x, n) {
return Array(n).fill(x).map((v, i) => (i + 1) * v)
}
또 아래 코드는 Array를 통해 n의 수만큼 Spread 문법으로 null 값으로 채워 넣게 되고
keys 매서드를 사용하면 null이 0부터 차례대로 자연수가 채워지게 됩니다.
여기서 map을 사용하여 각각의 값을 곱해주게 됩니다.
[null, null, null] => [0, 1, 2] => [4, 8, 12]
function solution(x, n) {
return [...Array(n).keys()].map(v => (v + 1) * x);
}
keys라는 매서드는 처음 알았는데 사용하면 어떠한 배열의 값이라도 0부터 차례대로 숫자를 대입하는 메서드 입니다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/keys
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
콜라츠 추측 (연습문제 Lv1 / JS) (0) | 2021.12.04 |
---|---|
하샤드 수 (연습문제 Lv1 / JS) (0) | 2021.12.02 |
핸드폰 번호 가리기 (연습문제 Lv1 / JS) (0) | 2021.12.01 |
행렬의 덧셈 (연습문제 Lv1 /JS) (0) | 2021.12.01 |
직사각형 별찍기 (연습문제 Lv1 / JS) (0) | 2021.12.01 |