[프로그래머스-자바스크립트] 배열 두 배 만들기

호박이와 칼림바·2023년 9월 6일
post-thumbnail

코딩테스트 입문 - 배열 두 배 만들기 문제


📢 문제 설명

정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.


⚠️ 제한사항

  • -10,000 ≤ numbers의 원소 ≤ 10,000
  • 1 ≤ numbers의 길이 ≤ 1,000

🔶 입출력 예

numbersresult
[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;
}

나는 좀 정석대로 풀었다고 하면,
다른 사람의 풀이는 훨씬 간결하다.

💡 다른 사람의 풀이(reduce, map 함수)

function solution(numbers) {
    return numbers.reduce((a, b) => [...a, b * 2], []);
}

reduce는 내장 고차 함수로써 배열 메서드 중 하나이다.
여러 데이터를 하나의 데이터로 응축할 때 사용한다고 한다.

reduce() 함수를 활용할 생각을 아예 못 했는데 이렇게도 풀 수 있구나 싶다.
아직 배열 메서드를 활용하는 데에 익숙하지 않은 거 같다. 그래서 이런 사고가 나오지 못 한듯하다.

const solution = (numbers) => numbers.map((number) => number * 2)

map 함수도 마찬가지다.
하나의 데이터를 다른 데이터로 매핑할 때 사용한다고 한다.

개인적으로 reduce 보다 map이 사용하기가 편한 거 같다.

profile
프론트엔드 개발자입니다.

0개의 댓글