170. 배열의 평균값
나의 코드 (24.1.24)
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
import Foundation
func solution(_ numbers:[Int]) -> Double {
var sum : Double = 0.0
var answer : Double = 0.0
if numbers[0] >= 0 && numbers[numbers.count-1] <= 1000 {
if numbers.count >= 1 && numbers.count <= 100 {
for i in 0...numbers.count-1 {
sum += Double(numbers[i])
}
}
}
answer = sum / Double(numbers.count)
return answer
}
이렇게 생각한 이유. 우선 배열이 주어지기 때문에 배열의 값을 누적하여 더할 변수 sum과 정답을 반환할 answer두개의 변수를 만들었다.
이때 두 변수의 자료형을 double로 한 것은 입출력의 예를 보면 답이 소수를 띄기 때문에 미리 자료형을 Int가 아닌 double로 해두었다 (평균값이 정수만 나온다는 보장도 없기때문에)
그 다음 배열의 원소에 접근하려면 0부터 시작하므로 반복문의 시작을 0 ~ 배열.count -1로 하였는데 배열.count로 하게되면 에러가 나기때문이다. (0부터 시작하기 때문)
배열.count는 배열의 길이 즉, 배열이 가지고있는 데이터가 몇개인지 알 때 쓴다.
배열은 다음글에서 다시 서술 할 예정.
다시 넘어와서, sum의 데이터형이 double이므로, number[i]에 double로 감싸서 데이터형을 일치시켰다. 마지막 answer도 같은이유.
- 24.2.2 코드 추가 고차함수 reduce를 이용하여 위의 코드를 간략화 하였다.
두가지 reduce를 적어보았다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import Foundation
var arr : [Int] = [1,2,3,4]
var answer : Double = 0.0
answer = Double(arr.reduce(0){$0 + $1}) / Double(arr.count)
var answer1 : Double = 0.0
answer1 = Double(arr.reduce(0, +)) / Double(arr.count)
print(answer);
print(answer1)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.