-
항해99 2주차 알고리즘 풀이2알고리즘 풀이 2021. 11. 8. 18:36
문제 설명
정수를 담고 있는 배열 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) {
let answer = 0; //answer 값을 0으로 준다.
//반복문을 arr의 i번째까지 돌려준 값과 answer(0)를 더해준 값이 answer가 된다.
for(let i = 0; i < arr.length; i++) {
answer += arr[i]; //answer=answer+arr[i]
}
//answer값에서 arr.length를 나누기해준다.
return answer / arr.length;
}
다른풀이
function average(array){
return array.reduce((a, b) => a + b) / array.length; }
**reduce함수
reduce()파라미터로 누적값, 현재값, 인덱스, 원본배열 값이 들어갈 수 있다.
const arr =[1,2,3,4,5]
arr.reduce(function(acc,cur) {
return acc + cur
}) //acc(누적값)과 cur(현재값)을 모두 더한 값이 결과값으로 나온다(15)
누적값 현재값 index
누적값 현재값 index 1 2 1 3 3 2 6 4 3 10 5 4 15 -초기값 설정
//초기값이 0일때
arr.reduce(function(acc,cur) {
return acc + cur
},0)
누적값 현재값 index 0 1 0 1 2 1 3 3 2 6 4 3 10 5 4 15 //초기값이 10일때
arr.reduce(function(acc,cur) {
return acc + cur
},10)
누적값 현재값 index 10 1 0 11 2 1 13 3 2 16 4 3 20 5 4 25 결국 전체 더한값에 초기값을 더해준 값이 나온다.
//초기값이 배열 일때
arr.reduce(function(acc,cur) {
acc.push(cur*2)//cur값에 2씩 곱한 배열을 return해서 []값에 push해준다.
return acc
},[])
//결과값은 [2, 4, 6, 8, 10]
**화살표함수(arrow function expression)
array.reduce((a, b) => a + b) / array.length; }
//a와b를 더한 값이 function reduce에 return된다고 생각하면 된다.
function average(array){
return array.reduce((a, b) => a + b) / array.length; }
//array.reduce((a, b) => a + b)---->a+b값을 모두 더한 누적값을 array.length로 나눠준다.(평균값 구하기)
'알고리즘 풀이' 카테고리의 다른 글
항해99 2주차 알고리즘 풀이4 (0) 2021.11.09 항해99 2주차 알고리즘 풀이3 (0) 2021.11.09 항해99 알고리즘 1일차(2) (0) 2021.11.09 항해99 알고리즘 1일 차(1) (0) 2021.11.08 항해99 2주차 알고리즘 문제 풀이1 (0) 2021.11.08