반응형
Notice
Recent Posts
Archives
Today
Total
Link
관리 메뉴

꾸준하게

[JS코딩테스트] 배열의 평균값 본문

JS코딩테스트

[JS코딩테스트] 배열의 평균값

DaeunCoding 2023. 3. 9. 07:35
728x90
반응형

[나의 풀이]

function solution(numbers) {
    let sum= 0;
    for(let i = 0; i < numbers.length; i++){
        sum += numbers[i];
    }
    let avarage = sum / numbers.length;
    let answer = avarage.toFixed(1);
    return answer;
}

1) let sum = 0;
 
자꾸 null값이 반환되어서 뭐가 잘못되었는지 했더니
두 번째 줄에 let sum;이 아니라 let sum = 0;을 넣어야 값이 제대로 반환되었다.
 
고민해보니 더하기 할당(+=)연산 때문인 듯하다.
 
sum 기존 값에 numbers[i]를 계속 추가해줘야 하는데,
sum이 선언만 되어있고 값이 할당되어있지 않아서 더할 수가 없었던 것이었다.
 
2) for...of문
 
나는 반복문을 기본 for문으로 처리했는데, 다른 풀이에서는 for...of문을 사용하였다.
 

function solution(numbers) {
    let answer = 0;
    for(i of numbers) {
        answer += i
    }
    return answer / numbers.length;
}

 
배열 numbers에 들어있는 객체를 모두 불러와주는 for ...of문.
코드가 훨씬 간결해졌다.
 
3) reduce
 
또다른 풀이 방법은 reduce()를 이용하는 방법이다.
 

function solution(numbers) {
    let answer = numbers.reduce((a,b) => a+b, 0) / numbers.length;
    return answer;
}

 
array.reduce((accumulator, currentValue) => accumulator + currentValue, initialValue);
 
즉, 
 
array.reduce((평균값, i) => 평균값 + i, 0);
 
이런 문법이다.
 
4) 소수점
 
문제에는

  • 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.

라고 쓰여있는데, 나는 소수점 첫째자리까지만 보이게 반올림하라는 뜻인 줄 알고
toFixed() 문법을 사용했다.
 
근데 다른 사람들의 풀이에는 전혀 쓰여있지 않다.
 
이건 아직 이해가 되지 않았다.
 
일단 오늘 풀이는 여기까지!
 

728x90
반응형