tier 통계학

풀이

산술평균과 범위는 쉽게 구할 수 있습니다.

중앙값은 개의 수를 모두 정렬한 다음 번째 값을 고르면 됩니다.

최빈값은 맵을 이용해서 각 수가 등장하는 횟수를 먼저 세어 줍니다. 그 다음 중복을 제거한 배열을 등장 횟수의 오름차순으로, 횟수가 같다면 값의 내림차순으로 정렬합니다. 만약 끝의 두 수의 등장횟수가 같다면 두 번째 원소를 출력하면 됩니다.

코드

파이썬의 반올림은 오사오입이 아닌 사사오입이므로 를 더한 다음 내림하는 방법을 사용했습니다.

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()