정답 1
해당 문제를 딱 처음 본 순간 아 for 문을 사용해야겠다! 라는 생각이 들었다. 그와 동시에 예전에 책에서 봤던 개선된(향상된) for문이 생각이 났고 냅다 코드를 작성해 돌려보았다.
class Solution {
public double solution(int[] numbers) {
int sum = 0;
for(int n : numbers) {
sum += n;
}
return (double)sum/numbers.length;
}
}
결과는 맞았다.
하지만 예전에 접했던 Arrays.stream 이란 기능이 생각이 났다. 그래서 리펙토링을 해보았다.
정답 2
import java.util.Arrays;
class Solution {
public double solution(int[] numbers) {
int sum = Arrays.stream(numbers).sum();
return (double)sum / numbers.length;
}
}
Arrays.stream 에는 sum 이라는 기능이 있다. 그래서 해당 기능을 사용해 손쉽게 int array 의 총합을 구할 수 있었다.
참고로 프로그래머스 답안지라고 해서 코드 박스 상기에 import 문을 빼먹으면 안된다.
결과는 맞았다.
하지만 다른사람들의 닶을 확인 한 순간 더 완벽한 답안지를 보았다. Array.stream 에 상기 문제에 더 알맞는 기능이 있었다.
정답 3 (MVA) - Most Valuable Answer in just my view,,,
import java.util.Arrays;
class Solution {
public double solution(int[] numbers) {
return Arrays.stream(numbers).average().orElse(0);
}
}
Arrays.stream 에는 int, double 배열의 총합의 평균을 구해주는 .average() 라는 기능이 있었다. 뒤에 orElse() 로 꼭 else 값을 지정해줘야 한다.
이러면 너무나도 간단하게 주어진 int 배열의 총합의 평균을 구할 수 있었다.
'프로그래머스 - 코딩테스트' 카테고리의 다른 글
[Java][프로그래머스] - LVL. 0 문자열 뒤집기 (1) | 2023.01.22 |
---|---|
[Java][프로그래머스] - LVL. 0 배열원소의 길이 (0) | 2023.01.22 |
[Java][프로그래머스] - LVL.0 피자나눠먹기 (0) | 2023.01.22 |
[Java][프로그래머스] - LVL.0 아이스 아메리카노 (0) | 2023.01.22 |
[Java][프로그래머스] - (LVL.0) 두수의 나눗셈 (0) | 2023.01.21 |