TIL(사전캠프)

알고리즘 코드카타 1. 배열의 평균값(2024-06-05)

note994 2024. 6. 5. 14:45

알고리즘 문제 개요

함수의 인자로 배열을 받고 그 배열의 평균값을 구하여 반환하는 solution 함수를 완성하는 문제이다. 

 

나의 답안 및 채점

 

문제가 단순하여 쉽게풀었다. 하지만 다른사람의 답안을 보니 흥미로운 코드가 있었다.

 

다른 사람의 답안

코드가 단 한줄이다. 나는 이 문법을 모르기때문에 차근차근 풀어서 해석을 해보기로 했다.

 

1. import java.util.Arrays;

Arrays 클래스를 가져온다. 배열에 관한 여러 함수가 들어있다.

 

2. return Arrays.stream(numbers).average().orElse(0);

  • Arrays.stream(numbers) = 배열을 스트림으로 변환한다. 스트림이란 배열의 원소를 순차적으로 처리할 수 있는 기능을 제공한다.
  • .average() = 스트림 원소들의 평균값을 계산한다. 이 메서드는 OptionalDouble 자료형으로 반환한다. OptionalDouble은 값이 있을 수도 있고 없을 수도 있는 상황을 처리하기 위한 클래스이다.
  • .orElse(0) = 스트림이 비어있어 평균값을 계산할 수 없다면 (numbers 배열이 비어있다면) 기본값으로 0을 반환한다.

 

또한 Arrays의 다른 주요 메서드들도 있다.

  • Arrays.sort(numbers); = numbers 배열을 오름차순으로 정렬한다.
  • Arrays.equals(numbers1, numbers2); = 두 배열이 동일한지 비교한다. 반환값은 boolean이다.
  • Arrays.fill(numbers, 42); = 배열을 42로 채운다.

 

이 코드는 간결하지만 시간복잡도가 어떤지 알 수 없기에 나의 답안과 비교해보기로 했다.

나의 코드 실행시간

 

다른사람의 코드 실행시간

생각보다 안좋은 문법이라고 생각했다. 시간의 차이가 눈에띈다. 하지만 내가 몰랐던 문법이었기에 하나 배워간다고 생각하니 기분이좋다. Arrays 클래스의 메서드들을 사용해야할 상황이 있을것이다.