ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 23.05.25) 알고리즘 문제) 배열의 평균값 구하기
    썽이의 개발 일지/TIL 2023. 5. 25. 20:48

    🧐문자열 연습하기

    function solution(numbers) {
        var answer = 0;
        return answer;
    }
    더보기

    📌 문제설명

    정수 배열 numbers가 매개변수로 주어집니다. 

    numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.

     

    📌제한사항

    • 0 ≤ numbers의 원소 ≤ 1,000
    • 1 ≤ numbers의 길이 ≤ 100
    • 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.

    📌입출력 예

    numbers result
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  5.5
    [89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] 94.0

     

     

    📌해결과정

     

    처음에는 먼저 정수 배열들의 값을 다 더하고 난 후에 평균값을 구하면 되는 문제니까

    for문을 이용해서 돌아볼까..? 생각했다.

        function solution(numbers) {
        var answer = 0;
        
        for(var i = 0; i < numbers.length; i++){
        
        }
        return answer;
    }

     numbers의 길이만큼 돌면서 값을 더해주면 된다고 생각해서 이렇게 for문을 작성했다.

    근데 그 다음 식을 어떻게 써야할지 도무지 감이 안잡혔다. 머릿속에는 각각 더하고 총 값에서 나누면 돼!

    이렇게 간단한 식인데 코드를 써서 하려니까 정말 감이 안잡혔다.. 

    answer = answer + numbers[i]

    간단하게 생각했을때 결국에 answer는 인덱스의 값들을 다 더하면 된다 생각이 들어서 

    우선 answer + numbers[i]식으로 값이 다 더해졌는지 console.log로 확인해보니 55,1034값이 잘 나왔다.

    여기에 평균값을 구하기 위해 길이만큼 나누면 끝!

    function solution(numbers) {
        var answer = 0;
        
        for(var i = 0; i < numbers.length; i++){
            answer = answer + numbers[i] / numbers.length
        } 
        return answer;
    }

     

    근데 변수를 계속 보다보니 수학적으로 더 간단한 식이 생각이 났다.

    정수 배열의 규칙성을 발견해서 등차의 평균일때만 가능한 식으로

    처음과 끝의 수만 더 하고 2로 나눠주면 리턴값 그대로 나올것이라 생각이 들었다.

     

    function solution(numbers) {
        var sum = numbers[0] + numbers[numbers.length -1]
        
        return sum / 2
    }

    순서 0번째값 0과 길이의 마지막 값을 더 해주고 그 값을 2로 나눠주면 이렇게 짧은 식으로도 평균값을 구할 수 있다!!

     

    for문이라도 제대로 익혀보고 싶어서 어제부터 알고리즘 문제풀 때 마다 for문을 일단 이용해보고 있는데

    앞으로 계속 문제 풀면서 오늘처럼 다양한 방법으로 도전해봐야겠다.

     

Designed by Tistory.