아요 개발 일기

[프로그래머스] Level 1. 평균 구하기 본문

Algorithms/문제 풀이

[프로그래머스] Level 1. 평균 구하기

소진이 2023. 1. 16. 10:36

안녕하세요!!

오늘은 평균구하기! 문제를 풀었어요 ㅎㅎ


문제

내가 쓴 답변

 

저는 for in 문을 사용해서 배열값을 result 값에 추가해줬어요.

arr와 result 값은 데이터 유형이 Int라 return 할때는 Double로 변환해서 계산 값을 보내줬습니다!

 


잘 풀었다고 생각한 풀이

여러분.. 이거 보세요.... 간결하고 깔끔한 코드......

func solution(_ arr:[Int]) -> Double {
    return Double(arr.reduce(0,+))/Double(arr.count)
}
func solution(_ arr:[Int]) -> Double {
    return Double(arr.reduce(0, { $0 + $1 })) / Double(arr.count)
}

둘의 형식은 비슷하므로 reduce 내부에 있는 수식만 따로 설명하겠습니다!

 

간단하게 reduce 함수부터 알아볼까요?

reduce는 데이터를 합쳐주기 위해 사용합니다. 내부의 값들을 결합하여 새로운 값을 만들어주죠!

 

이제 위의 코드의 reduce를 풀어보자면!

두 방식 모두 초기 값을 0으로 지정해 주었습니다. reduce(0, -)부분

다른 점은  + 와 $0 + $1 이죠?

+ : 배열의 전체 값의 합 저장하는 것을 뜻함

$0 + $1 : 배열의 첫 값과 다음 값의 합 (제가 적었던 result += i 연산과 유사해요!) 

뜯어 보니까 뜻하는게 같은 것 같아요!

+만 사용하는게 더 간결한 것 같네요?? 

 


세상에 저는 아직 멀었다는걸 한번 더 느끼고 갑니다.. 

틀린 부분이나 혹시 더 좋은 풀이 방법이 있다면 댓글로 알려주세요!

감사합니다ㅎㅎ