
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.
| numbers | result |
|---|---|
| [1, 2, 3, 4, 5] | [2, 4, 6, 8, 10] |
| [1, 2, 100, -99, 1, 2, 3] | [2, 4, 200, -198, 2, 4, 6] |
입출력 예 #1
[1, 2, 3, 4, 5]의 각 원소에 두배를 한 배열 [2, 4, 6, 8, 10]을 return합니다.
입출력 예 #2
[1, 2, 100, -99, 1, 2, 3]의 각 원소에 두배를 한 배열 [2, 4, 200, -198, 2, 4, 6]을 return합니다.
function solution(numbers) {
let answer = [];
for(let i of numbers)
answer.push(i*2);
return answer;
}
나는 좀 정석대로 풀었다고 하면,
다른 사람의 풀이는 훨씬 간결하다.
function solution(numbers) {
return numbers.reduce((a, b) => [...a, b * 2], []);
}
reduce는 내장 고차 함수로써 배열 메서드 중 하나이다.
여러 데이터를 하나의 데이터로 응축할 때 사용한다고 한다.
reduce() 함수를 활용할 생각을 아예 못 했는데 이렇게도 풀 수 있구나 싶다.
아직 배열 메서드를 활용하는 데에 익숙하지 않은 거 같다. 그래서 이런 사고가 나오지 못 한듯하다.
const solution = (numbers) => numbers.map((number) => number * 2)
map 함수도 마찬가지다.
하나의 데이터를 다른 데이터로 매핑할 때 사용한다고 한다.
개인적으로 reduce 보다 map이 사용하기가 편한 거 같다.