ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 항해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로 나눠준다.(평균값 구하기)

     

     

     

     

Designed by Tistory.