꾸준하게
[JS코딩테스트] 배열의 평균값 본문
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
반응형
'JS코딩테스트' 카테고리의 다른 글
[JS코딩테스트] 중복된 숫자 개수 (0) | 2023.03.13 |
---|---|
[JS코딩테스트] 점의 위치 구하기 (0) | 2023.03.10 |
[JS코딩테스트] 양꼬치 (0) | 2023.03.08 |
[JS코딩테스트] 각도기 (0) | 2023.03.06 |
[JS코딩테스트] 배열의 중앙값 구하기 (0) | 2023.03.05 |