:ledger: 문제 설명

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

:one: 제한사항

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

:two: 입출력 예

numbers result
[1,2,3,4] 2.5
[5,5] 5

:three: 입출력 예 설명

:pushpin: 3-1) 입출력 예 설명 #1

arr의 원소들의 평균 값은 2.5입니다.

:pushpin: 3-2) 입출력 예 설명 #2

arr의 원소들의 평균 값은 5입니다.

:four: 프로그래머스에서 제공한 코드

처음 프로그래머스에서 작성된 코드는 아래와 같다.

function solution(arr) {
    var answer = 0;
    return answer;
}

:ledger: 문제 풀이


const solution = arr => arr.reduce((a,b) => (a + b)) / arr.length

:one: 함수 선언

  • 화살표 함수를 사용하여 arr 매개변수를 받는다.

:two: 풀이

  • 먼저 매개변수로 전달 받은 배열을 각각 합쳐준다. reduce()메서드를 사용
  • 전부 합쳐준 뒤 배열의 length 만큼 나누어준다.

:three: 결과 반환

  • 매개변수 arr에 [1,2,3,4]을 대입 후 length를 나누어주면 (1+2+3+4) / 4 = 2.5
  • 매개변수 arr에 [5,5]을 대입 후 length를 나누어주면 (5+5) / 2 = 5

:four: 실행

  • console.log(solution([1,2,3,4])) 실행하면 5.5가 출력된다.
  • console.log(solution(5,5)) 실행하면 11이 출력된다.

:fire: 다른 사람의 풀이 참고

이전의 풀었던 Lv.0 평균값 구하기와 동일한 문제여서 같은 풀이 방식으로 문제를 해결했다.
그리고 댓글로 하나 안 사실은 배열의 길이가 커질수록 reduce메서드보다 for문이 훨신 속도가 빠르다는 것이다.

// [57명] reduce 메서드를 사용한 풀이방식
function average(array){
  return array.reduce((a,b) => a+b) / array.length;
}

// [144명] for 반복문을 사용한 풀이방식
function average(array){
  var sum = 0;
  for(var i = 0; i<array.length; i++){
    sum += array[i];
  }
  return sum/array.length;
}

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges