
문제 설명
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
제한 조건
입출력 예
| arr | retrun |
|---|---|
| [1,2,3,4] | 2.5 |
| [5,5] | 5 |
import java.util.Arrays;
class Solution {
public double solution(int[] arr) {
return (double)Arrays.stream(arr).sum()/arr.length;
}
}
어제 InStream 클래스에 대해 알게되어서, 문제를 보니 stream이 생각났다.
stream() : 배열 또는 컬렉션 인스턴스에서 이용할 수 있으며, 멀티스레드에서 사용이 가능하다. sum() : 합을 나타내는 메소드이다.합계를 배열의 길이로 나눠서 평균을 구하는 방식으로 진행했다.
double 형으로 강제 형 변환을 진행하여 소수점표시가 가능하도록 작성했다.
import java.util.Arrays;
class Solution {
public double solution(int[] arr) {
return (int) Arrays.stream(array).average().orElse(0);
}
}
sum()은 생각하고 average()는 생각 못했다.count() , Optional 클래스를 사용하면 min(), max() 도 모두 사용가능하다.
Optional클래스 : null이 될 수도 있는 객체를 감싸고 있는 클래스
orElse(0) : 비어있으면 0 을 반환한다. 아무래도 Optional 클래스와 Stream 에 대해 좀 더 공부하는 시간을 가져야 할 것 같다
참고
https://www.baeldung.com/java-array-sum-average
https://futurecreator.github.io/2018/08/26/java-8-streams/
https://juno-juno.tistory.com/51