정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
numbers의 원소 ≤ 1,000numbers의 길이 ≤ 100| numbers | result |
|---|---|
| [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | 5.5 |
| [89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] | 94.0 |
numbers의 원소들의 평균 값은 5.5입니다.
numbers의 원소들의 평균 값은 94.0입니다.
class Solution {
public double solution(int[] numbers) {
double answer = 0;
double sum = 0;
for(int i=0; i < numbers.length; i++){
sum += numbers[i];
}
answer = sum/numbers.length;
return answer;
}
}
for문에서 i의 증감식을 변경하면 코드를 줄일 수 있다.
// (1)
class Solution {
public double solution(int[] numbers) {
double answer = 0;
double sum = 0;
for (int i: numbers) {
sum += i;
}
answer = sum/numbers.length;
return answer;
}
}
// (2)
class Solution {
public double solution(int[] numbers) {
return Arrays.stream(numbers).average().orElse(0);
}
}
람다를 활용할 수 있는 기술 중 하나이다. 스트림은 '데이터의 흐름'으로, 배열 또는 컬렉션 인스턴스에 함수 여러 개를 조합해서 원하는 결과를 필터링하고 가공된 결과를 얻을 수 있다. 또한 람다를 이용해 코드의 양을 줄이고 간결하게 표현 가능하며, 배열과 컬렉션을 함수형으로 처리할 수 있다.
String[] arr = new String[]{"a", "b", "c"};
Stream<String> stream = Arrays.stream(arr);
Stream<String> streamOfArrayPart = Arrays.stream(arr, 1, 3);
//1~2요소 [b,c]
sum(), count(), average(), max(), min()
객체를 포장해주는 Rapper class. NullPointerException 예외처리를 간단하게 할 수 있다.
참고: https://futurecreator.github.io/2018/08/26/java-8-streams/
https://cjw-awdsd.tistory.com/41