🛠️ 문제
💻 풀이
- 처음 풀이: 문제를 보자마자 깊은 생각 없이 풀어버렸던 첫번째 방식이다. 너무나도 단순하게 arr를 for문으로 돌려서 누적합 이후에, length 크기로 나눠버림... 그랬더니 손쉽게 풀렸던 문제...😂
원시적인 방법이라 누구보다 빠르게 풀 순 있지만, 가독성이나 에러처리 같은 건 1도 고려하지 못한 방식이다.
class Solution {
public double solution(int[] arr) {
int sum = 0;
for (int a : arr) {
sum += a;
}
return (double) sum / arr.length;
}
}
- 두번째 풀이: 조금 더 머리를 쓰면서 스트림을 사용해보았다. 자바8부터 도입되었지만 개념만 알고 제대로 쓴 적이 없어서 약간의 고민 후에 완료! arr를 배열스트림으로 만들고, 평균을 구하는 것.
orElse
은OptionalDouble
로 반환하기 때문에 값이 없을 경우를 대비해서 0.0 (double)로 넣어주었다.
import java.util.Arrays;
class Solution {
public double solution(int[] arr) {
return Arrays.stream(arr).average().orElse(0.0);
}
}
🤔 고찰
- 코테를 풀 때 조금 더 침착하고, 깊게 생각해보자.
- 속도가 빠른 코드가 좋을까? 아니면 길이가 짧은 코드가 좋을까?
- 가독성이 좋은 코드란 무엇일까?
- 예외처리는 어떻게 진행해야지 깔끔한 것일까?