본문 바로가기
Developer/Algorithm

Programmers 프로그래머스 코딩테스트 연습 - 평균 구하기 (JavaScript)

by roqkfrlfhr 2020. 8. 27.

Programmers 프로그래머스 코딩테스트 연습 - 평균 구하기 (JavaScript)

 

Programmers(프로그래머스)의 코딩테스트 연습문제 Level 1 중,

평균 구하기 문제를 JavaScript로 해결해 보도록 하겠습니다.

 

 

문제 설명

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

 

제한사항

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

 

입출력 예

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

 

 

작성한 답

solution.js

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

 

설명

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성하는 문제입니다.

평균값을 구하는 방법은 다들 잘 아시다시피 모든 수들을 더한 값에 수들의 갯수를 나눠주면 됩니다.

모든 수를 더한다고 했을 때, JavaScript의 reduce() 함수를 가장 먼저 떠올리시면 될 것 같습니다.

 reduce() 함수의 callback 함수에서 첫버째 인수는 누적값을 나타내고, 두번째 인수는 현재 값을 나타내기에 코드만 봐도 이 인수가 무엇을 의미하는지 바로 이해하실 수 있도록 첫번째 인수 이름을 accumulator, 두번째 인수 이름을 currentValue 라고 명명했습니다.

 

역시 장황한 설명보다 작성한 답의 코드를 풀어내어 console.log()로 진행 과정을 출력해서 보여 드리는 것이 이해가 빠르실 것 같습니다.

var arr = [1, 2, 3, 4];
solution(arr);

function solution(arr) {
    var sum = arr.reduce((accumulator, currentValue) => {
        console.log("accumulator : ", accumulator, " / currentValue : ", currentValue);
        return accumulator + currentValue;
    });
    console.log("sum : ", sum);
    
    var avg = sum / arr.length;
    console.log("avg : ", avg);
    
    return avg;
}

// 콘솔 출력 내용
// accumulator :  1  / currentValue :  2
// accumulator :  3  / currentValue :  3
// accumulator :  6  / currentValue :  4
// sum :  10
// avg :  2.5

확실히 풀어내어 진행과정이 나타나있는 코드를 보시면 바로 감이 오시리라 생각됩니다.

역시 장황한 설명보다는 앞으로 이런 식으로 설명드리는 것이 더 좋을 것 같습니다.

 

 

 

도움이 되셨다면 공감, 댓글 부탁드립니다!

궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!

 

감사합니다.


댓글