문제 출처

문제 설명

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.


제한사항
  • arr은 길이 1 이상, 100 이하인 배열입니다.
  • arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.

입출력 예
arr return
[1, 2, 3, 4] 2.5
[5, 5] 5

풀이

(arr배열의 모든 원소의 합 / arr배열의 길이)를 구하는 간단한 문제입니다.

1
2
3
4
5
6
7
8
9
func solution(_ arr:[Int]) -> Double {
  var sum = 0
    
  for i in 0..<arr.count {
    sum += arr[i]
  }
    
  return Double(sum) / Double(arr.count)
}
  1. 주어진 배열의 길이만큼 반복문을 실행합니다.
  2. sum 변수에 arr 배열의 요소를 더합니다.
  3. 평균값을 계산해 반환합니다. (/ 계산 시 분모와 분자의 자료형을 맞춰줘야 합니다.)
실행 결과

스크린샷 2022-08-02 오후 6 02 58


풀이(reduce 함수 이용)

배열의 요소들을 더할 때 swift 고차함수인 reduce가 있는데요.
reduce를 사용하면 좀 더 간결하게 코드를 짤 수 있습니다.

1
2
3
func solution(_ arr:[Int]) -> Double {
  return Double(arr.reduce(0, +)) / Double(arr.count)
}
  • reduce를 이용해 arr 배열의 모든 원소의 합을 구한 뒤 평균값을 계산해 반환합니다.
실행 결과

스크린샷 2022-08-02 오후 6 24 01


시간이 같게 나올 줄 알았는데 예상외로 고차함수를 사용했을 때 시간이 더 오래 걸렸습니다.
혹시 이유를 아시는 분 계실까요…?

업데이트:

댓글남기기