[프로그래머스 / JavaScript] Lv.1 평균 구하기

반응형

 

문제 설명

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

 

제한 조건

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

 

문제 풀이

function solution(arr) {
    let answer = 0;
    
    for (let i = 0; i < arr.length; i++) {
        answer += arr[i];
    }
    return answer/arr.length;
}

주어진 배열의 개수만큼 나눠야하니까 answer 을 arr.length로 나누었다.

 

다른 사람 풀이

function solution(arr) {
	return.reduce((a, b) => a + b) / arr.length;
}

reduce()* 메서드와 화살표 함수를 사용하였음

 

 

*reduce()

리듀서(reducer) 함수를 실행하고 하나의 결과값을 반환한다.

arr.reduce(callback[, initialValue])

 

reduce()는 빈 요소를 제외하고 자신을 호출한 배열의 모든 요소를 순회하며 인수로 전달받은 콜백 함수를 반복 호출한다.

  • 누산기 (acc - accumulator) : 누산기는 콜백의 반환값을 누적한다. 콜백 이전 반환값 또는 콜백의 첫 번째 호출이면서 initialValue를 제공한 경우에는 initialValue의 값이다.
  • 현재 값 (cur - currentValue) : 처리할 현재 요소
  • 현재 인덱스 (idx - currentIndex) : 처리할 현재 요소의 인덱스 
  • 원본 배열 (src - array) : reduce()를 호출한 배열

 

콜백의 최초 호출 때 accumulator와 currentValue는 다음 두 가지 값 중 하나를 가질 수 있다. 

  • reduce() 함수 호출에서 initialValue를 제공한 경우 : accumulator = initialValue, currentValue는 배열의 첫 번째 값과 같다.
  • initialValue를 제공하지 않은 경우 : accumulator는 배열의 첫 번째 값과 같고 currentValue는 두 번째와 같다.

만약 arr = [1,2,3,4] 일 때, initialValue = 0이라면 acc = 0, currentValue = 1, index = 0 이 된다.

 

반응형