728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12944
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제]
정수를 담고 있는 배열 arr의 평균값을 return 하는 함수, solution을 완성해 보세요.
arr은 길이 1 이상, 100 이하인 배열입니다.
arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
[입출력 예]
[풀이]
주어진 배열의 요소를 모두 더한 후에 해당 배열의 사이즈만큼 나눠줍니다.
예시처럼 소수점으로 return 되는 경우를 고려하여 문제 반환 타입은 Double이어야 합니다.
먼저 자바 풀이입니다.
Double형 변수 1개를 선언한 뒤, 주어진 배열을 순회하며 해당 변수에 각 요소를 더해줍니다.
double answer = 0;
for(int i=0; i<arr.length; i++) {
answer += arr[i];
}
그다음, 총합이 계산된 변수를 arr.length 만큼 나눠주면 됩니다.
class Solution {
public double solution(int[] arr) {
double answer = 0;
for(int i=0; i<arr.length; i++) {
answer += arr[i];
}
answer /= arr.length;
return answer;
}
}
다음은 코틀린 풀이입니다.
코틀린은 매우 간단하게 함수 하나로 풀이가 가능합니다..
class Solution {
fun solution(arr: IntArray): Double = arr.average()
}
아예 평균값을 반환해 주는 average() 함수가 존재합니다.
함수의 내부 코드를 확인해 보면
/**
* Returns an average value of elements in the array.
*/
public fun IntArray.average(): Double {
var sum: Double = 0.0
var count: Int = 0
for (element in this) {
sum += element
++count
}
return if (count == 0) Double.NaN else sum / count
}
결국 자바 풀이와 동일하게 1개 변수에 모든 요소 값을 더해 그 사이즈만큼 나눠주는 것을 보실 수 있습니다.
그리고 이를 하나의 확장함수로 정의한 형태입니다.
코틀린의 컬렉션은.. 자바와 비교가 안될 만큼 편리하죠
728x90