※문제설명
정수 배열 numbers가 매개변수로 주어집니다.
numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
My Solution
// // 1. 전체의 합 구하기
// function solution(n) {
// let answer = 0;
// for(let i=0; i<n.length; i++)
// answer += n[i];
// // 2. n으로 나누기
// return answer/=n.length;
// }
const solution = (arr)=>arr.reduce (function add(sum,currValue){
return sum + currValue/arr.length;},0)
부족한 점 | 처음 코드 자체가 배열로 입력받는 지 모르고 왜 합이 안구해지는 지 한시간 정도 고민했던 것 같다. reduce를 사용할 줄 몰랐기에 나는 for문을 통해서 전체의 값을 구하고 전체 수를 나눌 생각이었다. 하지만 배열로 입력이 받았기 때문에 합과 평균을 나누는 방법을 찾지 못했다. 그러다 length를 알게 되었고 length를 통해 문자열을 길이로 평균을 구할 수 있었다. reduce는 내가 구조를 아직 잘 파악하지 못했다. 뒤에 오는 0은 왜 오는 거지 생각을 했었는데 그 0은 '초기값'을 뜻하는 것이다. |
개선 방안 | 전체의 합 정도는 구할 수 있다. 하지만 배열에 대한 개념이 조금 부족하다는 생각이 들었다. 배열의 전체적인 개념을 더 파악한 후에 다양한 코드에 접목할 수 있도록 노력해야한다. 그리고 배열의 합계와 평균을 구하는 방법으로 reduce에 대한 개념을 조금 확고히 할 필요가 있다. |
reduce
배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값);
배열의 합계와 평균을 구하는 방법으로는 reduce()
배열의 역순으로 연산을 원할 때는 reduceRight()
reduce( )의 callback 함수는 누적 값과 현재 처리 중인 배열의 element(=currValue)를 파라미터로 받는다.
누적 값과 currValue의 합을 리턴하면 리턴된 값이 callback 함수의 누적 값(sum)으로 전달된다.
Different Approach
(1) for of
function solution(numbers) {
var answer = 0;
for(i of numbers) {
answer += i
}
return answer / numbers.length;
}
5 넣었을 때 [1,2,3,4,5] 배열 생성
answer += i // i에 배열 원소 대입
for (variable of iterable) {
statement
}
const 오브는배열 = ["오브", "는", "배열"];
for (let i of 오브는배열) {
console.log(i);
}
// 결과
// "오브"
// "는"
// "배열"
(2) reduce
const solution = (numbers) => numbers.reduce((a, c) => a += c, 0) / numbers.length
function solution(numbers) {
return numbers.reduce((acc, cur) => acc + cur) / numbers.length
}
느낀 점 | 알아야할 함수는 많다 또한 내가 모르는 함수도 너무 많다. 개발자가 게을러지기 위해서는 처음에는 정말 많은 것을 알기위해 부지런해야겠다는 생각이 들었다. 그래서 인강을 결제했다. |
참고 블로그 :
https://cocobi.tistory.com/134
https://www.zerocho.com/category/JavaScript/post/5acafb05f24445001b8d796d
'프론트엔드로 가는 길 > 프로그래머스' 카테고리의 다른 글
09. 369게임 (번외) (0) | 2022.11.05 |
---|---|
08.두 수의 나눗셈 & 양꼬치 (0) | 2022.11.04 |
06. 짝수의 합 (0) | 2022.11.02 |
05. 각도기 (0) | 2022.10.30 |
04. 숫자 비교하기 & 나이 출력 (0) | 2022.10.29 |