본문 바로가기

Coding Test/Programmers

[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 28 - 배열 두 배 만들기) → map, reduce, for, forEach, for...of 다 사용해보기

728x90

 

# 문제 

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




# 답안 

// 1. 입력: numbers -> 정수 배열 [1,2,3] 같은거 
// 2. 출력: numbers의 각 원소에 두배한 원소를 가진 배열 [2,4,6] 같은거



// 방법1) map 사용
function solution(numbers) {
    return numbers.map((number) => number * 2);
}



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



// 방법3) for 반복문 사용
function solution(numbers) {
    const answer = [];
    for(let i=0; i<numbers.length;i++){
        answer[i]=numbers[i]*2;  // answer배열의 i번째 요소는 numbers배열의 i번째 요소에 2배한 값이다.
    }
    return answer;
}



// 방법4) forEach 반복문 사용
function solution(numbers) {
    const answer = [];
    numbers.forEach(num => answer.push(num * 2)) // numbers에 있는 각 요소에 2배 한 값을 answer 배열에 push한다.
    return answer;
}



// 방법5) for...of 반복문 사용
function solution(numbers) {
    const answer = [];
    for(let num of numbers){
        answer.push(num * 2)
    }
    return answer;
}

 

< 2번 방법 풀이 > 

ex. numbers = [1, 2, 3, 4, 5]

1. reduce 함수를 사용하여 배열 numbers를 반복하는데, 초기값으로 빈 배열 []을 사용한다.
2. 첫 번째 요소 1이 현재 요소 b로 전달된다. 현재의 누적값 a는 초기값인 빈 배열 []이다.
3. 현재 요소 b를 2배하여 1 * 2는 2가 된다. 이 값 2가 현재의 누적값 a에 추가되어 [2]가 된다.
4 .두 번째 요소 2가 현재 요소 b로 전달된다. 현재의 누적값 a는 [2]이다.
5. 현재 요소 b를 2배하여 2 * 2는 4가 된다. 이 값 4가 현재의 누적값 a에 추가되어 [2, 4]가 된다.
6. 세 번째 요소 3이 현재 요소 b로 전달된다. 현재의 누적값 a는 [2, 4]이다.
7. 현재 요소 b를 2배하여 3 * 2는 6이 된다. 이 값 6이 현재의 누적값 a에 추가되어 [2, 4, 6]이 된다.
8. 최종적으로는 [2, 4, 6]이 반환되어 각 요소가 2배가 된 새로운 배열이 만들어진다.

 

 

728x90