티스토리 뷰
문제 설명
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
제한 사항
- arr은 길이 1 이상, 100 이하인 배열입니다.
- arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
문제 풀이
더보기
//배열의 객체를 모두 더해서 (arr[0]+arr[1]+arr[2] ... +arr[arr.length]) - 반복문 사용
//배열의 길이만큼 나눈다 /(arr.length)
라고 예상했다. 배열의 객체를 모두 더하는 방법은 for문을 사용하면 될 것 같다.
1차 코드
function solution(arr) {
var answer = 0;
for (let i = 0; i<arr.length; i++){
(answer += arr[i])/arr.length;
}
return answer
}
이렇게 넣고 테스트를 돌려보니까 결괏값과 기댓값이 달랐다.
뭐가 문제일까? 곰곰히 생각해보다가 for문 안에 /arr.length를 넣으면 for문이 한번 실행될 때 마다 나누기도 같이 반복해서 실행된다는 사실을 깨달았다.
배열의 객체를 모두 더하는 것은 for문 안에서 반복으로 해결하지만, 배열의 길이만큼 나누는 것은 한번만 해야 한다.
2차 코드
function solution(arr) {
var answer = 0;
for (let i = 0; i<arr.length; i++){
(answer += arr[i])
}
return answer/arr.length;
}
테스트를 실행해보니까 된다!
정답 코드
function solution(arr) {
var answer = 0;
for (let i = 0; i<arr.length; i++){
(answer += arr[i])
}
return answer/arr.length;
}
다른 사람 풀이 구경하기
더보기


reduce 메서드를 이용해서 코드를 훨씬 줄였다. 그런데 나는 reduce 메서드 보단 아래 테스트로 출력해 보기 위해 console.log를 찍어보는 게 더 놀라웠다. 왜 그 생각을 못했을까? 나도 다음엔 콘솔 찍어봐야지.
'스파르타 > 알고리즘 코드카타' 카테고리의 다른 글
코딩 테스트 - 약수의 합 (0) | 2024.08.11 |
---|---|
코딩 테스트 - 자릿수 더하기 (0) | 2024.08.09 |
코딩 테스트 - 가운데 글자 가져오기 (0) | 2024.08.02 |
코딩 테스트 - 수박수박수박수박수박수? (0) | 2024.08.01 |
코딩 테스트 - 짝수와 홀수 (0) | 2024.07.11 |