JavaScript/알고리즘

프로그래머스 평균 구하기 JS

hihiha2 2023. 7. 28. 13:18

문제 설명

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

 

 

🙋‍♀️ 내 생각

너무 쉬운 문제라서 블로그에 적을까 말까 고민하다가 적는다 ㅎㅎ

모든 문제를 다 적을 수는 없어서 그래도 뭔가 배우거나 기록하고 싶은게 있는 문제를 올린다.

이 문제는 뭔가 크게 배울만한 문제를 아니지만, 그래도 꾸준히 기록해두면 좋을것 같아서 적어보았다.

 

이 문제는 1단계문제인데도 0단계중에 복잡한 문제보다 훨씬 더 쉬운 문제이다.

만약 이 문제가 어렵게 느껴졌다면 아마 reduce의 사용법이 익숙지 않아서 일것이라고 생각한다.

 

 

✅ 내 코드

function solution(arr) {
    return arr.reduce((acc,cur)=>acc+cur,0)/arr.length
}

말 그대로 평균만 구하면 되는 문제이다.

평균은 모든 요소의 합을 모든 요소의 수로 나누면 된다.

 

예를 들어 1,2,3,4의 평균은 1+2+3+4 / 4 와 같이 구한다.

 

계산기와 같이 특수한 식을 처리하고 싶을때 reduce를 사용할 수 있다.

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

    arr.reduce(callback[, initialValue])

reduce의 매개변수로는 아래와 같은 값들이 들어간다.

optional한 값들도 있지만 적지 않았다.

 

callback

배열의 각 요소에 대해 실행할 함수. 네 가지 인수를 받습니다. (optional은 여기에 안적음)

accumulator

누산기는 콜백의 반환값을 누적합니다. 콜백의 이전 반환값 또는, 콜백의 첫 번째 호출이면서 initialValue를 제공한 경우에는 initialValue의 값입니다.

currentValue

처리할 현재 요소.

 

reduce의 주요 매개변수는 acc와 cur이다. acc는 값을 누적시키는 역할을 하고 cur는 현재요소를 의미한다.

그래서 모든 값의 합을 구하고 싶으면 callback안에 두개의 매개변수를 적고 acc+cur를 하면 된다.

 

이렇게 arr의 합을 구했으면 마지막으로 요소의 개수로 나눠주면 된다.

arr.length를 통해 요소의 개수를 구할 수 있다.

 

 

 

🙋‍♀️ 내 생각

reduce만 알면 정말 쉽게 풀 수 있는 문제이다. 아주 복잡한 reduce식을 만드는 것은 아직 어렵지만 이렇게 합과 같이 간단한 식을 구하는 것은 바로바로 풀 수 있다. 연습과 반복만이 살길이 맞는 것 같다. 알고리즘 처음 시작했을때 reduce가 정말 대단하고 어렵게만 느껴졌는데 이제는 바로바로 떠올리고 적용하는 것이 쉬워진 것 같다. 앞으로 더 어려운 문제를 만나도 이렇게 쉽게 풀수있도록 꾸준히만 해야겠다는 생각이 들었다. 엄청 어려운 알고리즘을 다 풀어버리자..!가 목표는 아니고 조금이라도 자바스크립트를 더 이해하고 지금 쓰고 있는 언어처럼 쉽게 내 생각을 표현하고 싶어서 연습하고 있다.