티스토리 뷰

문제 설명

정수를 담고 있는 배열 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를 찍어보는 게 더 놀라웠다. 왜 그 생각을 못했을까? 나도 다음엔 콘솔 찍어봐야지.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함