문제
Compute the average of the list, then keep only the values strictly greater than it, in their original order.
Implement above_average(numbers).
Input
numbers: The list of integers.
Output
Return the values above the average (an empty list for an empty input).
제약 조건
0 ≤ length ≤ 10,000; -1,000,000 ≤ each value ≤ 1,000,000
예시
입력:
numbers = [1, 2, 3, 4, 10]
예상 출력:
expected = [10]
입력:
std::vector<long long> numbers = {1, 2, 3, 4, 10};
예상 출력:
std::vector<long long> expected = {10};
입력:
long[] numbers = new long[] {1, 2, 3, 4, 10};
예상 출력:
long[] expected = new long[] {10};
설명
The average is 20 / 5 = 4; only 10 is greater than 4.
입력:
numbers = [5, 5, 5]
예상 출력:
expected = []
입력:
std::vector<long long> numbers = {5, 5, 5};
예상 출력:
std::vector<long long> expected = {};
입력:
long[] numbers = new long[] {5, 5, 5};
예상 출력:
long[] expected = new long[] {};
설명
Every value equals the average 5, so none is greater: [].
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
먼저 리스트의 평균을 구한 뒤, 그보다 큰 값만 남기세요.
힌트 2
보통 전체 합을 구하는 한 번의 순회와, 조건에 맞는 값을 모으는 한 번의 순회가 필요합니다.
힌트 3
리스트가 비어 있으면 결과도 비어 있어야 합니다.
예상 복잡도
시간 O(n), 추가 공간 O(1)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.