[프로그래머스] lv1.평균 구하기

Nana·2022년 9월 6일
0

Algorithm

목록 보기
6/7

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12944


내 코드


class Solution {
    public double solution(int[] arr) {
        double answer = 0;
        
        for(int i = 0; i<arr.length; i++){
            answer += arr[i]; 
        }

        answer /= arr.length;
        return answer;
    }
}


따봉 코드 톺아보기

- , 덱스또 , 이태훈 , - , 탈퇴한 사용자 외 21 명
import java.util.Arrays;

public class GetMean {
    public int getMean(int[] array) {
        return (int) Arrays.stream(array).average().orElse(0);
    }

    public static void main(String[] args) {
        int x[] = {5, 4, 3};
        GetMean getMean = new GetMean();
        // 아래는 테스트로 출력해 보기 위한 코드입니다.
        System.out.println("평균값 : " + getMean.getMean(x));
    }

Array 클래스

배열을 다루기 위한 다양한 메소드가 포함되어 있다. Array 클래스의 모든 메소드는 클래스 메소드(static method) 이므로, 객체를 생성하지 않고 바로 사용기 가능하다.

이 클래스는 java.util 패키지에 포함되므로, 반드시 import문으로 패키지를 불러온 뒤에 사용해야한다.

스트림 (streams)

Arrays.stream();

자바 8 이전에는 for 또는 foreach 문을 돌며 요소 하나씩 꺼내는 방법이 있었다.

스트림은 '데이터의 흐름'이다. 배열 또는 컬렉션 인스턴스에서 함수 여러 개를 조합해서 원하는 결과를 필터링하고 가공된 결과를 얻을 수 있다.
또한 간단하게 병렬처리가 가능하다. 즉 스레드를 이용해 많은 요소들을 빠르게 처리할 수 있다.


📌 스레드란?

프로세스는 실행중인 프로그램을 의미한다면, 스레드는 실행 제어만 분리한 것을 의미한다. 스레드는 운영체제로부터 자원을 할당받는 프로세스로부터 자원을 할당받고, 프로세스의 코드/데이터/힙영역을 공유하기 때문에 좀 더 효율적으로 통신할 수 있습니다. 또한 컨텍스트 스위칭도 캐시 메모리를 비우지 않아도 되는 스레드쪽이 빠르다. 그리고, 스레드는 자원 공유로 인해 문제가 발생할 수 있다.

orElse

.average().orElse(0);

average()로도 계산이 가능하나 OptionalDouble 형으로 출력되기 때문에 orElse문을 붙여야 한다.
orElse(0) : 해당 객체 안에 값이 null이면 0을 반환한다.

참고
https://hbase.tistory.com/212
https://zzunsik.tistory.com/85
http://www.tcpschool.com/java/java_api_arrays
https://futurecreator.github.io/2018/08/26/java-8-streams/

0개의 댓글