행복을 담는 블로그

[프로그래머스] 배열의 합 구하기/ reduce( ) 메서드 본문

Algorithm/프로그래머스

[프로그래머스] 배열의 합 구하기/ reduce( ) 메서드

hyun0zin 2024. 1. 4. 12:54

// 풀이 1
function solution(numbers) {
    let array = numbers;
    const result = array.reduce(function add(a,b){
        return a+b;
    })
    return result/array.length;
}
// 풀이 2
function solution(numbers) {
    var sum = 0;
    for (i=0; i<numbers.length; i++){
       sum = sum + numbers[i];
    }
    return sum / numbers.length;
}

💡 프로그래머스에서 배열의 평균을 구하는 문제를 풀었다.
for문을 이용해서 sum을 구하는 방식으로 시도하다가 for문 풀이 시도가 잘 되지 않아 다른 방법을 시도하다가 reduce() 메서드를 알게 되었다.

📌 Array.prototyep.reduce()

  • reduce() method
    : 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환한다.
    즉, callback 함수의 일종이다.
arr.reduce(callback[, initialValue])

(자세한 내용은 여기서 확인)
Array.prototype.reduce()

아무튼 reducer 함수를 실행하는 배열의 reduce() 메서드가 있지만,,,

오늘은 reduce 함수를 이용하여 배열의 합을 구하는 것을 해 보았다!

 

1. reduce () 메서드로 배열의 합 구하기


(출처 어제 오늘 내일 )

let array = [1,2,3];

const result = array.reduce(function add(sum, curValue){
    return sum + curValue;
},0)

reduce() 함수의 parameter로 전달되는 callback 함수는 누적값(sum) 과 현재의 element(curValue)로 받는다.
이후 sum + curValue를 리턴하여 callback 함수의 누적값(sum)으로 전달된다.

✅ initialValue(초기값) 설정 (optional)
: 초기값 설정은 필수는 아니지만, 초기값을 설정하지 않은 채로 빈 배열(ex) array =[];)이 전달 될 경우, error가 발생한다.

const arr = [ ];

const result = arr.reduce(function add(sum, currValue) {  
return sum + currValue;  
});

console.log(result); // ERROR

📌 reduce() 함수 간단하게 보기

// 1️⃣ 기본 표기 방법
let array = [1,2,3];

array.reduce(function add(a,b){return a+b;});

// 2️⃣ 화살표 함수로 변환하여 나타내기  
array.reduce((a,b) => a+b);

// 3️⃣ 변수 설정하기
const arr = [1, 2, 3];

const result = arr.reduce(function add(sum, currValue) {  
return sum + currValue;  
}, 0);

 

2. reduce () 메서드로 배열의 평균 구하기

: reduce() 함수로 배열의 합을 구한 다음, 배열의 길이만큼 나눠주기!

function solution(numbers) {
    let array = [1,2,3];

    const result = array.reduce(function add(sum, curValue){
        return sum + curValue; 
    },0);
return result/array.length; // 배열(array) 길이만큼 나누기
}