풀이
산술평균과 범위는 쉽게 구할 수 있습니다.
중앙값은
최빈값은 맵을 이용해서 각 수가 등장하는 횟수를 먼저 세어 줍니다. 그 다음 중복을 제거한 배열을 등장 횟수의 오름차순으로, 횟수가 같다면 값의 내림차순으로 정렬합니다. 만약 끝의 두 수의 등장횟수가 같다면 두 번째 원소를 출력하면 됩니다.
코드
파이썬의 반올림은 오사오입이 아닌 사사오입이므로
from math import floor
def main():
N = int(input())
numbers = sorted(int(input()) for _ in range(N))
average = floor(sum(numbers) / N + 0.5)
median = numbers[N // 2]
rng = numbers[-1] - numbers[0]
count = {}
for number in numbers:
if number not in count:
count[number] = 0
count[number] += 1
unique_numbers = list(set(numbers))
unique_numbers.sort(key=lambda num: (count[num], -num))
if N > 1 and count[unique_numbers[-1]] == count[unique_numbers[-2]]:
mode = unique_numbers[-2]
else:
mode = unique_numbers[-1]
print(average)
print(median)
print(mode)
print(rng)
main()