-
#AIL_23.11.03 // Programmers_배열의 평균 값AIL( Algorithm I Learned) 2023. 11. 3. 20:51
## AIL_배열의 평균 값
***문제 설명
정수 배열 numbers가 매개변수로 주어집니다.
numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
***제한사항
0 ≤ numbers의 원소 ≤ 1,0001
≤ 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
***입출력 예 설명
입출력 예 #1
numbers의 원소들의 평균 값은 5.5입니다.
입출력 예 #2
numbers의 원소들의 평균 값은 94.0입니다.
## solution.JavaScript
1. 문제의 접근 방식
정수 배열 `numbers`의 원소들의 평균값을 구하는 문제입니다.
1) 배열 내 모든 원소를 합산하기 위한 변수 `sum`을 초기화 합니다.
2) 평균값을 저장할 변수 `avg`를 초기화합니다.
3) 그 다음, 배열을 반복하면서 각 원소를 `sum`에 더해나갑니다.
4) 배열을 모두 순환한 후에 `sum`을 배열의 길이로 나누어서 평균값을 계산합니다.
5) 마지막으로 계산된 평균값을 반환합니다.
핵심은 배열 내 모든 원소 합산 후 총합을 배열의 길이로 나누어 평균값을 계산하는 것!!
2. 문제풀이
function solution(numbers) { let sum = 0; let avg = 0; for(let i=0; i < numbers.length; i++) { sum = numbers[i]+sum; avg = sum/numbers.length; } return avg; } /* 테스트 1 입력값 〉 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 기댓값 〉 5.5 테스트 2 입력값 〉 [89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] 기댓값 〉 94.0 */
3. 다른사람의 문제풀이 및 접근방식 분석
function solution(numbers) { var answer = numbers.reduce((a,b) => a+b, 0) / numbers.length; return answer; } /* 테스트 1 입력값 〉 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 기댓값 〉 5.5 테스트 2 입력값 〉 [89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] 기댓값 〉 94.0 */
위의 코드는 배열의 `reduce` 함수와 화살표 함수를 사용하여 문제를 해결하였습니다. `reduce` 함수는 배열의 모든 원소를 하나의 값으로 줄이는 데 사용합니다. 위의 코드에서 `numbers.reduce((a,b) => a + b, 0)`과 같이 사용되었습니다. `a`는 누적된 합계를 나타내며, `b`는 배열의 각 원소을 나타냅니다. 초기값을 0으로 지정하여 합계를 0에서부터 시작하도록 지정했습니다.
# 더 효율적인 `reduce`함수를 사용하자!
# `reduce` 기억하기_ 배열의 모든 원소를 하나의 값으로 줄인다!
'AIL( Algorithm I Learned)' 카테고리의 다른 글
#AIL_23.11.07 // Programmers_문자 반복 출력하기 (0) 2023.11.07 #AIL_23.11.03 // Programmers_양꼬치 (1) 2023.11.03 #AIL_23.11.02 // Programmers_몫 구하기 (0) 2023.11.02 #AIL_23.11.02 // Programmers_나이 출력 (0) 2023.11.02 #AIL_23.10.26 // Programmers_정렬_K번째 수 (0) 2023.10.26