개발하는 무민

[프로그래머스-Level1] 평균 구하기_JavaScript + reduce() 함수 본문

Algorithm/Programmers

[프로그래머스-Level1] 평균 구하기_JavaScript + reduce() 함수

무민_ 2022. 5. 19. 10:30

평균 구하기

- 문제 설명

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

- 제한사항

  • arr은 길이 1 이상, 100 이하인 배열입니다.
  • arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.

- 입출력 예

arr                return
[1,2,3,4] 2.5
[5,5] 5

 


< reduce() 함수 >

자바스크립트의 reduce 함수는 배열의 각 요소를 순회해서 collback 함수의 실행 값을 누적하여 하나의 결과값을 반환한다. 기본적인 형태는 아래와 같다.

arr.reduce(callback(accumulator, currentValue, index, array), initialValue)

 

reduce()의 파라미터는 다음과 같다.

 

accumulator(누산기)

- 누적되는 값

- callback 함수의 반환값을 누적함

- initialValue를 설정한 경우, callback의 최초 호출시 initialValue 값으로 초기화

- initialValue가 없을 경우, arr의 0번째 인덱스 값으로 초기화

(즉, initialValue는 Optional한 파라미터이며, 최초 callback 함수 실행시 accumulator에 제공되는 값이다.

초기값을 제공하지 않을 경우 배열의 첫 번째 요소를 사용하고, 빈 배열에서 초기값이 없을 경우엔 에러가 발생한다.)

 

currentValue

- 현재 배열의 요소

 

index (생략 가능!)

- 현재 배열 요소의 인덱스

 

array (생략 가능!)

- reduce 함수를 호출한 배열 (위에서는 arr가 해당된다.)

 

initialValue (생략 가능!)

- callback의 최초 호출시 accumulator의 초기값

 

reduce 함수를 사용하여 배열의 요소들의 합계를 구하고, 해당 값을 배열의 길이로 나누어서 평균값을 계산하면 된다.

 

- 풀이

// 배열의 합계와 평균을 구하는 방법 : reduce() 사용
// reduce를 통해 배열의 합을 구한 뒤, 배열의 길이만큼 나누어서 평균값 계산

function solution(arr) {
    
    // 결과를 담을 상수 변수 result 선언 후
    // 함수의 인자로 받은 arr에 reduce 함수를 통해 합계를 구함
    // 인자로 accumulaotr, currValue 두개만 사용한다.
    // accumulaotr = sum => 누적 값을 담는 인자
    // currValue => 현재 배열의 요소 값을 담는 인자
    const result = arr.reduce(function add(sum, currValue) {
        return sum + currValue; //즉, arr 배열 요소를 하나씩 순회하며 sum에 더한 값을 리턴해줌
    }, 0); //initialValue는 0으로 전달하거나 값을 주지 않아도 동작한다.
    
    // 위에서 구한 배열의 합계값을 배열의 길이(요소의 갯수)로 나누어 평균값 구하기
    const average = result / arr.length;
    
    //console.log(average);
    
    return average;
}

 

참고 : https://developer-talk.tistory.com/146