✏️ 문제
: 평균 구하기
✏️문제 설명
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
✏️제한사항
arr은 길이 1 이상, 100 이하인 배열입니다.
arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
✏️입출력 예
[1,2,3,4] | 2.5 |
[5,5] | 5 |
1) 시도 : 100점
class Solution {
public double solution(int[] arr) {
double sum = 0;
for(int a : arr){
sum += a;
}
double answer = sum/arr.length;
return answer;
}
}
2) 다른 사람의 풀이 참고
import java.util.Arrays;
class Solution {
public double solution(int[] arr) {
return Arrays.stream(arr).average().orElse(0);
}
}
3) 셀프 피드백
소수점으로 결과를 내기위해서, sum의 타입을 double로 주었다. 나누는 수 중 하나만 소수타입이여도 소수로 반환된다. 다른풀이를 참고하여 임포트도 된다는 것을 알았고, 배열의 데이터 소스로 스트림을 생성하기 위해서 다음과 같이 할 수 있다. 이 외에도 아래의 블로그를 참고하였다. 그리고 스트림의 평균 연산 average()를 이용하여 평균을 구하였다. Optional에서의 orElse값이 null이 아닐 경우 그 해당 값을(Value) 반환하며 null일 경우 Type T를 그대로 반환한다. 따라서 값이 없을 경우 평균값 0을 반환하기 위해 .orElse(0) 을 추가하였다.
String[] strArr = new String[4];
Stream<String> stream = Arrays.stream(strArr);
Stream<String> stream2 = Stream.of(strArr);
[Java] 스트림(Stream)의 최종 연산 - 요소의 연산 : sum(), average()
스트림(Stream)의 최종 연산 - 요소의 연산 : sum(), average() 1. sum() IntStream이나 DoubleStrem과 같은 기본 타입 스트림의 모든 요소에 합을 반환합니다. 예제) Int 타입 스트림의 합 public static void createStreamI
tychejin.tistory.com
orElse 와 orElseGet 무슨 차이가 있을까?
The Lazy Snack's Cargo
ysjune.github.io