코딩테스트(JavaScript) 프로그래머스 : 평균 구하기

Parkboss·2022년 8월 23일
0

코딩테스트

목록 보기
5/19

✅문제

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

❕ 제한사항

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

📢 입출력 예제


💻 내 풀이

function solution(arr) {
    const answer = arr.reduce((num,cur) => num + cur, 0) / arr.length;
    return answer;
}

먼저 배열의 합을 구하고 나누는 방식을 생각하다가 구글링을 통해 reduce를 알게 되어 손쉽게 문제를 풀었다.

📢 reduce(callback[, initialValue]) 알아보자!

  • reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서(reducer)함수를 실행하고, 하나의 결과값을 반환한다.

  • callback: 배열의 각 요소에 대해 실행할 함수. 다음 네 가지 인수를 가짐

  • 리듀서 함수는 네 개의 인자를 가진다.

      1. accumulator: 누산기(acc), 콜백의 반환값을 누적. 콜백의 이전 반환값 또는 콜백의 첫 번째 호출이면서 initialValue를 제공한 경우에는 initialValue의 값임
      1. currentValue: 현재 값 (cur), 처리할 현재 요소
      1. currentIndex (Optional) : 처리할 현재 요소의 인덱스. initialValue를 제공한 경우 0, 아니면 1부터 시작 (inx)
      1. array (Optional) : reduce()를 호출할 배열
  • initialValue (Optional) : callback의 최초 호출에서 첫 번째 인수에 제공하는 값
    초기값을 제공하지 않으면 배열의 첫 번째 요소를 사용
    빈 배열에서 초기값 없이 reduce()를 호출하면 오류 발생

사용 방법

reduce()에는 누산기가 포함되어 있기 때문에, 배열의 각 요소에 대해 함수를 실행하고 누적된 값을 출력할 때 용이하다.
가장 기본적인 예제로는 모든 배열의 합을 구하는 경우가 있다.

const arr = [1, 2, 3, 4, 5];
const result = arr.reduce((acc, cur, idx) => {return acc += cur;}, 0);
console.log(result); // 15

const arr2 = [1, 2, 3, 4, 5];
const result2 = arr2.reduce((acc, cur, idx) => [return acc += cur;}, 10);
console.log(result2); // 25

위의 예제에서 initialValue 값을 0으로 두었기 때문에 acc 초기값은 0이 되고, 배열의 첫 번째 요소부터 acc에 자신의 값 cur을 더해간다.
reduce()를 실행하고 난 뒤, 최종적으로 반환되는 값은 0+1+2+3+4+5인 15이다.

만약 ititialValue 값을 10으로 둔다면, acc의 초기값은 10이 되고, 배열의 첫 번째 요소부터 acc에 자신의 값이 cur을 더해가므로 최종적으로 반환되는 값은 10+1+2+3+4+5인 25가 된다.

profile
ur gonna figure it out. just like always have.

0개의 댓글