본문 바로가기
코딩테스트/Javascript

[Level1] 평균 구하기 답안 및 풀이

by SRin23 2021. 7. 27.

◇ 문제 설명

정수를 담고 있는 배열 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) {
    var answer = 0;
    return answer;
}

 


◇ 답안

function solution(arr) {
    var answer = 0;
    answer = arr.reduce((sum, current) => sum + current, 0);
    answer /= arr.length;
    return answer;
}

 

◇ 답안 풀이

function solution(arr) {
    var answer = 0;
    //reduce메서드를 이용하여 0번째 인덱스부터 누적합 계산
    answer = arr.reduce((sum, current) => sum + current, 0);
    //누적합을 배열의 길이로 나누어 반환
    answer /= arr.length;
    return answer;
}

 

◇  arr.reduce() 메서드

※ 출처 : javascript.info [아래 출처란 참고]

▶ 형태

//function(이전함수호출결과, 현재배열요소, 요소의 위치, 배열{...},[초깃값]
let value = arr.reduce(function(accumulator, item, index, array) {
  // ...
}, [initial]);

▶ reduce는 배열을 기반으로 값 하나를 도출할때 사용하는 반복문의 역할을 한다.

함수의 인수와 역할(인수에는 그에맞는 값 혹은 변수가 사용된다)

인수 역할
accumulator 이전 함수의 호출결과를 저장하는 변수(누적)
item 현재 배열의 요소
index 요소의 위치
array 계산할 배열
initial 초기값[생략가능]

누적합 구하기

let arr = [1, 2, 3, 4, 5];

//result에 reduce메서드를 이용하여 arr배열 요소의 값에 대한 누적합 구하기
//화살표 함수 사용
//화삻표 함수를 사용하였으므로, function의 인수를 모두 제외하고, initial값만 인수로 받는다.
//sum은 더할 요소, current는 누적합으로 0번째 인덱스부터 시작하여 배열끝까지 반복
let result = arr.reduce((sum, current) => sum + current, 0);

alert(result); // 15

 

 누적합 구하기 원리

[출처 : javascript.info]

누적합구하기 원리

표로 나타낼 경우

  sum current result
첫 번째 호출 0 1 1
두 번째 호출 1 2 3
세 번째 호출 3 3 6
네 번째 호출 6 4 10
다섯번째 호출 10 5 15

 

◇ 실행결과

평균 구하기 실행결과

 

◇ 출처

https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

https://ko.javascript.info/array-methods

 

배열과 메서드

 

ko.javascript.info

 

댓글