본문 바로가기

Develop/Algorithm

[프로그래머스] 평균 구하기 / Level 1 / JAVA

반응형

✏️ 문제

: 평균 구하기

 

✏️문제 설명

정수를 담고 있는 배열 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

 

반응형