◇ 문제 설명
정수를 담고 있는 배열 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
'코딩테스트 > Javascript' 카테고리의 다른 글
| [Level1] 콜라츠 추측 답안 및 풀이 (0) | 2021.07.27 |
|---|---|
| [Level1] 핸드폰 번호 가리기 답안 및 풀이 (0) | 2021.07.26 |
| [Level1] 행렬의 덧셈 답안 및 풀이 (0) | 2021.07.26 |
| [Level1] x만큼 간격이 있는 n개의 숫자 답안 및 풀이 (0) | 2021.07.21 |
| [Level1] 직사각형 별찍기 답안 및 풀이 (0) | 2021.07.21 |
댓글