문제 설명
정수 배열 numbers
가 매개변수로 주어집니다. numbers
의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
제한사항
numbers
의 원소 ≤ 1,000numbers
의 길이 ≤ 100입출력 예
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입니다.풀이 과정
어제 풀었던 짝수의 배열 문제와 비슷해서 어렵지 않게 해결!
배열 내 정수의 개수를 구할 수 있는 count 개념을 새로 알게 되었다.
“평균값 = 모든 수를 더한 총합을 총 개수로 나눈 값” 이므로
1. for ~ in 구문 사용해 원소의 합을 구하고,
2. count를 사용해 배열의 길이(배열 내 원소의 개수)를 구해 1을 2로 나눠주었다.
import Foundation
func solution(_ numbers:[Int]) -> Double {
var sum = 0
for i in numbers {
sum += i
}
return sum / numbers.count
//error: Cannot convert return expression of type 'Int' to return type 'Double'
}
Error1
Cannot convert return expression of type 'Int' to return type 'Double'스코프 & 자료형을 확인하지 않아 생긴 오류.
어제 공부한 부분인데 홀랑 까먹고 신경을 못썼다. 하핫.원소의 평균값이 실수로 나타나므로
반환할 때 sum(정수의 합)과 numbers.count(배열의 길이, 즉 배열 내 정수의 개수)를
Double(실수값 저장 자료형)로 묶어줘야 한다.
import Foundation
func solution(_ numbers:[Int]) -> Double {
var sum = 0
for i in numbers {
sum += i
}
return Double(sum / numbers.count)
//error: Cannot convert return expression of type 'Double' to return type 'Int'
}
Error2
그래서 이렇게 묶어줬는데 왜 에러가 났느냐..!!
(아직 정확한 이유를 찾지 못했다. 질문하러 가야겠다. 찾고 와서 내용 수정.)
Double을 sum과 numbers.count에 각각 묶어주었더니 오류를 해결할 수 있었다.return Double(sum) / Double(number.count)
Solution
import Foundation
func solution(_ numbers:[Int]) -> Double {
var sum = 0
for i in numbers {
sum += i
}
return Double(sum) / Double(numbers.count)
}
이렇게 최종 완성!
다른 풀이들도 찾아봤는데, 어제 짝수의 합 문제에서도 그렇고
filter, reduce 개념을 활용한 풀이가 많이 보이더라.
고차함수 개념인 것 같던데 아직 모르는 부분이라
이번주 중으로 공부해서 활용해봐야겠다 :>