728x90
반응형
문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤ numbers의 원소 ≤ 1,000
- 1 ≤ numbers의 길이 ≤ 100
- 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.
입출력 예
age | 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 |
입출력 예 #1
- numbers의 원소들의 평균 값은 5.5입니다.
입출력 예 #2
- numbers의 원소들의 평균 값은 94.0입니다.
[나의 풀이]
import java.util.Arrays;
class Solution {
public double solution(int[] numbers) {
return Arrays.stream(numbers)
.mapToDouble(element -> (double)element)
.average()
.getAsDouble();
}
}
[풀이과정]
Arrays.stream(numbers)를 통해 배열을 Stream으로 변환.
mapToDouble(element -> (double)element)을 통해 int타입의 배열요소들을 double타입으로 모두 변경한 stream을 반환.
average()로 평균값을 연산한 Optional타입 결과를 반환
getAsDouble()로 double타입값으로 반환
풀면서 mapToDouble이 아닌 map으로 하다가 컴파일오류가나서 검색을했다.
[다른 풀이]
import java.util.Arrays;
class Solution {
public double solution(int[] numbers) {
return Arrays.stream(numbers).average().orElse(0);
}
}
내 코드와 비슷하게 Arrays.stream을 사용하였고,
double로 변경하지 않고 바로 평균값을 구한 뒤 getAsDouble()의 Exception 방식 대신
orElse(0)을 통해 null인 경우 0을 반환해줄 수 있는 기본값을 설정한 코드이다.
여기서 핵심은 stream의 평균 연산의 경우 소수점을 포함한 double형태로 연산이 진행된다는 것이다.
728x90
반응형
'코딩테스트 - 프로그래머스 > Lv. 0' 카테고리의 다른 글
[33] JAVA 편지 (0) | 2023.11.16 |
---|---|
[32] JAVA 양꼬치 (0) | 2023.11.16 |
[30] JAVA 짝수의 합 (0) | 2023.11.16 |
[29] JAVA 각도기 (0) | 2023.11.16 |
[28] JAVA 두 수의 나눗셈 (0) | 2023.11.16 |