[문제]
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
[제한사항]
- arr은 길이 1 이상, 100 이하인 배열입니다.
-arr의 원소는 -10,000이상 10,000 이하인 정수입니다.
[입출력 예]
arr | return |
[1,2,3,4] | 2.5 |
[5,5] | 5 |
[내가 적은 답]
function solution(arr) {
var answer = 0;
arr.map(n=>answer+=n);
return answer/arr.length;
}
[다른 사람 답]
function average(array){
return array.reduce((a, b) => a + b) / array.length;
}
다른 분들의 풀이를 보다가 더 간단한 코드가 있어서 정리해보려고 한다
배열을 돌면서 뭘 반복하라고 하면 map 함수 밖에 안떠올랐는데 한 번도 사용해본 적 없는 reduce가 나왔다
reduce가 뭐지? 어떻게 쓰는 거지?
reduce 메서드
[사용법]
배열.reduce((누적값, 현재값, 인덱스, 요소) => { return 결과 }, 초기값);
[사용 예시]
[0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array) {
return accumulator + currentValue;
}); //10
[0, 1, 2, 3, 4].reduce( (prev, curr) => prev + curr ); //10
만약 reduce() 함수 호출에서 초기값을 제공한 경우, accumulator는 초기값과 같고 currentValue는 배열의 첫 번째 값과 같다. 초기값을 제공하지 않았다면, accumulator는 배열의 첫 번째 값과 같고 currentValue는 두 번째와 같습니다.
위 두 코드는 결과값이 같다. 두 번째 코드가 화살표 함수를 사용하여 코드를 더 간단하게 표현한 것이다.
reduce 함수는 누적값을 활용해야 하는 상황에서 매우 편리할 것 같다.
'코딩테스트' 카테고리의 다른 글
[코테] 프로그래머스 Lv.1 문자열 내 p와 y의 개수 (1) | 2022.10.18 |
---|---|
[코테] 프로그래머스 Lv.1 정수 제곱근 판별 (0) | 2022.10.17 |
[코테] 프로그래머스 Lv.1 자연수 뒤집어 배열로 만들기 (0) | 2022.10.17 |
[코테] 프로그래머스 Lv.1 자릿수 더하기 (0) | 2022.10.10 |
[코테] 프로그래머스 Lv.1 약수의 합 (0) | 2022.10.10 |