포스트

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 라이센스를 따릅니다.