728x90
문제 설명
정수를 담고 있는 배열 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) {
let answer = 0;
let sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i] // 배열의 요소들을 하나씩 더함
}
return answer = sum / arr.length; // 더한 값과 배열의 길이(=요소 갯수)를 나눈다.
}
// reducer() 메서드를 사용한 풀이법
function solution(arr) {
return arr.reduce((sum, current) => sum + current) / arr.length
}
- reducer(): 배열의 각 요소에 대해 주어딘 리듀서 함수를 실행하고, 하나의 결과값을 반환한다
const reducer = (a, b) => a + b;
const array = [1, 2, 3, 4];
console.log(array.reduce(reducer));
// 10
멘토님의 풀이법
function solution(arr) {
// 중간고사 평균
// 국어 90점, 수학 86점, 과학 64점
// 모든 과목의 점수를 합산해 / 과목의 수만큼 나누면
// 중간고사 평균 점수 나옴
// 총 점수의 합 / 과목의 수를 나누면 평균점수를 나룰 수 있음
let sum = 0;
for (let i = 0; i < arr.length; i++) {
// i를 이용한 index 값 할당
console.log(arr[i], i);
sum += arr[i];
// sum = sum + arr[i]
}
// sum 에 array.length를 나눔
return sum / arr.length;
}
return arr.reduce( (cu, el) => {
// 최촉시 0 넣어ㅈ기
return cu + el
},0) / arr.length
정리 및 참고자료
문제의 해결방법은 for문을 돌려 각 배열의 합을 구해 나누어 평균을 구하는 방식이다. 조금 더 찾아보면 다른 방법도 존재한다. reducer() 매서드를 이용하면 for문을 사용하지 않고도 평균을 낼수 있다.
'etc. > Algorithm' 카테고리의 다른 글
[알고리즘 테스트] 가운데 글자 가져오기 (0) | 2022.01.18 |
---|---|
[알고리즘 테스트] 체육복 (0) | 2022.01.18 |
[프로그래머스 알고리즘 테스트] 짝수와 홀수 (0) | 2022.01.17 |