:ledger: 문제 설명

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

:one: 제한사항

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

:two: 입출력 예

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]

:three: 입출력 예 설명

:pushpin: 3-1) 입출력 예 설명 #1

[1, 2, 3, 4, 5]의 각 원소에 두배를 한 배열 [2, 4, 6, 8, 10]을 return합니다.

:pushpin: 3-2) 입출력 예 설명 #2

[1, 2, 100, -99, 1, 2, 3]의 각 원소에 두배를 한 배열 [2, 4, 200, -198, 2, 4, 6]을 return합니다.

:four: 프로그래머스에서 제공한 코드

처음 프로그래머스에서 작성된 코드는 아래와 같다.

function solution(numbers) {
    var answer = 0;
    return answer;
}

:ledger: 문제 풀이


const solution = numbers => {
    // 배열 생성
    let answer = [];
    
    // numbers 에 대입된 값들을 곱하기 2해준 다음 answer 에 넣어줌
    numbers.forEach(target => {
        answer.push(target * 2);
    })
    
    // 값 반환
    return answer;
} 

console.log(solution[1,2,3,4,5]);
console.log(solution[1,2,100,-99,1,2,3]);

:one: 함수 선언

  • 화살표 함수를 사용하여 numbers 매개변수를 받는다.

:two: 풀이

  • 변수 answer 생성 후 배열을 생성한다.
  • 매개변수 numbers에 대입된 값들을 각각 2씩 곱해주기 위해 forEach문을 사용함
  • numbers 배열의 각 요소에 대해 target 변수가 콜백 함수의 매개변수로 전달됨
  • 각 요소는 콜백 함수 내부에서 target * 2로 게산되고, answer 배열에 push 메서드를 사용하여 추가함

:three: 결과 반환

  • numbers에 [1,2,3,4,5]를 대입할 경우 forEach문을 통해 으로 [2,4,6,8,10]을 반환
  • numbers에 [1, 2, 100, -99, 1, 2, 3]를 대입할 경우 forEach문을 통해 으로 [2, 4, 200, -198, 2, 4, 6]을 반환

:four: 실행

  • console.log(solution[1,2,3,4,5]);을 호출하면, 2,4,6,8,10 반환
  • console.log(solution[1,2,100,-99,1,2,3]);을 호출하면, 2,4,200,-198,2,4,6 반환

:fire: 다른 사람의 풀이 참고

이번 풀이 과정에선 배열에 추가를 하는 것으로 forEach문을 사용해서 적용했는데, forEach문은 항상 undefined를 반환하며, 배열을 변환하는 작업을 할 때는 map메서드를 사용하는것이 적절하다는 것을 배웠다.
이번 풀이에서도 reduce 를 사용한 풀이 과정에 댓글이 가장 많았으며, map 을 사용한 풀이과정도 보였다.
배열에 대해 알수록 더 reduce, map, filter 과 같이 다양한 메서드에 대해 공부해야 겠다.

// [5명] reduce 메서드를 사용한 풀이 과정
function solution(numbers) {
    return numbers.reduce((a, b) => [...a, b * 2], []);
}

// [55명] map 메서드를 사용한 풀이 과정
const solution = (numbers) => numbers.map((number) => number * 2)

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges