from typing import List
def money_unbalance(n: int, money: List[int]) -> int:
average_money = sum(money) / n
return sum([1 for x in money if x <= average_money])
T = int(input())
for test_case in range(1, T + 1):
n = int(input())
money = list(map(int, input().split()))
print(f'#{test_case} {money_unbalance(n, money)}')
T = int(input()) # 테스트 케이스의 수
for i in range(1, T+1):
N = int(input()) # 정수의 개수
incomes = list(map(int, input().split())) # 각 사람의 소득
avg = sum(incomes) / N # 평균 소득
count = len([x for x in incomes if x <= avg]) # 평균 이하인 소득을 가진 사람들의 수
print("#{} {}".format(i, count)) # 결과 출력
위 코드의 시간 복잡도는 O(N*T)입니다. 입력값으로 주어지는 정수의 개수를 N이라고 할 때, 리스트에 소득을 저장하는 부분은 O(N)의 시간이 소요됩니다. 그 후에는 리스트 내포를 이용하여 평균 이하의 소득을 가진 사람들의 수를 세는데, 이 또한 입력값의 크기에 비례하여 O(N)의 시간이 걸립니다. 따라서 전체적인 시간 복잡도는 O(N)입니다.
시간복잡도 서로 동일 -> 효율성 같다.