Algorithm/프로그래머스

[프로그래머스 : 코딩테스트 연습 - Swift] 평균 구하기

버스트 캐넌 2023. 12. 8. 00:57

글 작성에 앞서 본 블로그의 모든 게시글은 블로그 주인의 개발 일지(일기) 형태의 게시글입니다.

정보를 나누는 방식보단, 제가 했던 방식을 공유하는 식의 글이라 읽어도 제대로 이해를 못 하실 수 있거나 더 좋은 다른 방법이 존재할 수 있습니다.

이 점 양해해 주시며 본 블로그의 게시글을 읽어주시면 감사하겠습니다.

programmers

안녕하세요 버스트캐넌입니다.

 

오늘은 Lv1 단계 문제를 한번 풀어볼까.. 해서 Lv1 단계 문제를 들고 와봤습니다.

 

Lv1 단계의 난이도를 정확하게 모르겠어서 정답률 87%의 평균 구하기라는 문제를 풀어보았습니다.

 

엄청 멍청하게 풀긴 했지만, 바로 풀었던 문제라서 그냥 Lv0이랑 Lv1의 정답률 80% 이하의 문제를 풀어봐야겠습니다.

 

일단 바로 풀어보겠습니다.

 

문제


문제 설명

  • 정수를 담고 있는 배열 arr의 평균값을 return 하는 함수, solution을 완성해 보세요.

제한 사항

  • arr은 길이 1 이상, 100 이하인 배열입니다
  • arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.

입출력 예

  • arr: [1,2,3,4], return: 2.5

풀이


func solution(_ arr:[Int]) -> Double {
    var sum = 0.0
    var aver = 0.0
    for i in 0..<arr.count {
        sum += Double(arr[i])
    }
    aver = sum/Double(arr.count)
    return aver
}

기본 개념


이번 코드에선 설명할 기본 개념이 없어 넘어갑니다.

 

코드 풀이


사실 코드가 간단한 코드라.. 그냥 대충 설명해 보자면

 

일단 합계랑 평균인 sum이랑 aver 각각 선언하고, arr의 개수만큼 arr의 첫번째 요소를 하나씩 sum에 더하고, sum을 arr의 갯수만큼 나누어서 반환하였습니다.

 

바로 다른 사람 코드 탐구를 해보겠습니다.

다른 사람 코드 탐구


func solution(_ arr:[Int]) -> Double {

    return Double(arr.reduce(0,+))/Double(arr.count)
}

 

아니 고차함수 배운 지 얼마나 지났다고 적용하는 걸 까먹었네요.

 

reduce 고차함수를 간단히 설명하자면 결합을 위한 고차함수입니다.

 

내부의 값을 결합하여 새로운 값을 만드는데, 위에서 쓰인 reduce는 엄청나게 축약한 reduce 고차함수로,

 

초기값 0부터 시작해서 arr안의 모든 변수를 + 시키는 개념이라고 이해하면 편합니다.

 

이상 평균 구하기 문제를 풀어보았습니다.

 

포스팅 읽어주셔서 감사합니다.

 

좋은 하루 보내세요~

 

궁금한 점이나 지적해야 할 부분이 있으시면 댓글 남겨주세요. 블로그 주인의 상황에 따라 답변이 없을 수 있으나, 최대한 피드백해 드리겠습니다.