Swift랑 친해지기/programmers 풀기

[프로그래머스] 평균구하기 (Swift)

데브킹덕 2022. 1. 24. 19:31

문제설명
주어진 코드
내가 푼 코드 

 

1. 먼저 정수를 담고 있는 배열 arr의 평균 값을 구하는 함수 solution을 구하기 위해 고민을 해본다.

평균 =  n개의 수의 합 / n개 로 하면 될 것 같다. 

2. 주어진 함수에서 Int에서 왜 Double형으로 반환하는지 고민해본다. 

이유는 배열 arr이 가지고 있는 아이템의 합을  n개로 나누면 나머지가 0이 아니고 정확하게 떨어지지 않기 때문이다.

3. 그러면 배열 안에 아이템들의 합을 어떻게 표현해야할까??

reduce(_:_:)를 이용해 Array요소의 합을 구할 수 있다.

swift에서는 다음과 같이 선언했다.

func reduce<Result>
(_ initialResult: Result, _ nextPartialResult: (Result, Element)throws -> Result)
rethrows - >Result

reduce의 첫번째 인자는 시작값이다.(0)

두번째 인자는 어떠한 연산을 할지 적어준다.(+,-,/,*)

//예시
func exArraySum{_ arr: [Int]) -> Int {
	return arr.reduce(0,+)
}

따라서 배열안에 있는 아이템의 합을 다음과 같이 구할 수 있다.

arr.reduce(0,+)

4. 배열의 아이템의 총 개수는 .count로 구할 수 있다. 

적용하게 되면 다음과 같다. 

arr.count

5. 이제 상수를 하나 만들어서 전체 합에 나누기 n개를 하면 된다. 

하지만 여기서 주의할 점! 반환값이 Double인 것을 염두해야 한다. 

때문에 선언 및 초기화를 할때 반드시 Double형임을 적어주어야 한다.

점수가 매우 짜다....