programmers/level1

[level1] - 평균 구하기

태기의삶 2020. 7. 21. 19:52

 

 

 

코딩테스트 연습 - 평균 구하기

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr

programmers.co.kr

문제 설명 :

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

 

입출력 예

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

 

접근 방법 :

문제를 보면 배열의 모든 항목을 다 더해서 모든 항목의 수로 나눠서 평균을 구하는 문제이다.

정말 단순하게 반복문 돌려서 다 더한다음 배열의 길이로 나누면 되겠다 라는 생각을 했지만...

그 생각은 너무 일차원적인 접근 방법 같았고, 그 방식과는 다른 접근 방법을 생각하다가 마침 ES6 문법을 공부하고 있었고, 공부하면서 배운 reduce()를 써서 구하면 되겠다는 생각이 문뜩 떠올랐다.

reduce() 에는 첫번째 인자로 콜백 함수가 들어가고, 두 번째 인자로는 초기값이 들어간다.

첫 번째 인자인 콜백 함수에는 acc, cur를 인자로 받고, return 에는 acc + cur을 세팅했다.

이것의 의미는 acc는 누적 값을 말하고, cur은 현재 값을 의미한다.

즉, 배열 arr을 모두 순회할 때, acc에 cur을 계속 값을 더하면서 누적되기 때문에 최종적으로 모두 더한 값이 출력이 된다.

reduce() 잘 모르면 참고!

 

Array.prototype.reduce()

reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.

developer.mozilla.org

그러고 나서, 모두 더한 값을 배열의 길이만큼 나눠서 평균값을 반환하면 문제가 해결 된다.

내가 짠 코드 :

function solution(arr) {
    return arr.reduce((acc, cur) => {return acc + cur} , 0) / arr.length;
}