:ledger: 문제 설명

정수 배열 numbers가 매개변수로 주어진다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해라.

:one: 제한사항

  • 0 ≤ numbers의 원소 ≤ 1,000
  • 1 ≤ numbers의 길이 ≤ 100
  • 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어진다.

:two: 입출력 예

numbers result
[1,2,3,4,5,6,7,8,9,10] 5.5
[89,90,91,92,93,94,95,96,97,98,99] 94.0

:three: 입출력 예 설명

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

numbers의 원소들의 평균 값은 5.5입니다.

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

numbers의 원소들의 평균 값은 94.0입니다.

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

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

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

:ledger: 문제 풀이


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

:one: 함수 선언

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

:two: 풀이

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

:three: 결과 반환

  • 매개변수 numbers에 [1,2,3,4,5,6,7,8,9,10]을 대입 후 length를 나누어주면 55 / 10 = 5.5
  • 매개변수 numbers에 [89,90,91,92,93,94,95,96,97,98,99]을 대입 후 length를 나누어주면 1034 / 11 = 94

:four: 실행

  • console.log(solution([1,2,3,4,5,6,7,8,9,10])) 실행하면 5.5가 출력된다.
  • console.log(solution(89,90,91,92,93,94,95,96,97,98,99)) 실행하면 11이 출력된다.

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

공부한 reduce() 메서드로 적용해봤는데 많은 사람들이 동일하게 푼 풀이과정을 보고 흡족했다.
만약 reduce()메서드를 몰랐다면, 나도 반복문으로 적용했을 것 같다.

// [150명] 나와 같은 reduce 메서드를 사용한 풀이방식
function solution(numbers) {
    var answer = numbers.reduce((a,b) => a+b, 0) / numbers.length;
    return answer;
}

// [144명] for ..of 반복문을 사용한 풀이방식
function solution(numbers) {
    var answer = 0;
    for(i of numbers) {
        answer += i
    }
    return answer / numbers.length;

}

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