문제: https://www.acmicpc.net/problem/2108

최빈값을 구하는 부분에서 가장 애를 먹었다.
처음에는 most_common 함수가 dict 형태를 return 하는 줄 알아서 두 번째로 작은 값을 어떻게 찾나 싶었는데, 알고보니 리스트 형태를 반환한다고 한다.
또한 같은 빈도를 갖는 경우 첫 번째 원소를 기준으로 알아서 정렬이 되는 것 같다.
그래서 어렵지 않게 답을 찾을 수 있었다.

(참고: 파이썬 공식 레퍼런스 문서)

소스코드

from collections import Counter
import sys

input = sys.stdin.readline

def mean(n, numbers):
    return round(sum(numbers) / n)

def median(n, numbers):
    return numbers[n // 2]

def mode(n, numbers):
    numbers_counter = Counter(numbers).most_common()
    if n > 1:
        if numbers_counter[0][1] == numbers_counter[1][1]:
            return numbers_counter[1][0]
    return numbers_counter[0][0]

def min_max(n, numbers):
    return numbers[-1] - numbers[0]

n = int(input())
numbers = [int(input()) for _ in range(n)]
numbers.sort()

print(mean(n, numbers))
print(median(n, numbers))
print(mode(n, numbers))
print(min_max(n, numbers))