https://www.acmicpc.net/problem/2108
import sys
n = int(sys.stdin.readline()) # 1<=N<=500,000, N 기반 리스트 생성 불가능
nums = dict() # 딕셔너리 형식으로 숫자:등장횟수 저장
# 딕셔너리에 입력
for i in range(n):
data = int(sys.stdin.readline())
if data in nums:
nums[data] += 1
else:
nums[data] = 1
# 산술평균
summation = 0
for key in nums.keys():
summation += key*nums[key]
print(round(summation/n))
# 중앙값
count = 0
for key in sorted(nums.keys()):
for _ in range(nums[key]):
count += 1
if count == n//2+1: # 중앙값 번째라면
print(key) # 중앙값 프린트
break
# 최빈값
freq_list = [] # 최빈값이 많은 경우 저장
max_frq = max(nums.values()) # 최빈 횟수
for key in nums.keys():
if nums[key] == max_frq: # 최빈 등장한 수를 frq_list에 저장
freq_list.append(key)
# 하나 있을 때는 그냥 출력
if len(freq_list) == 1:
print(freq_list[0])
# 여러개 있을 때는 최빈값 중 두 번째로 작은 값 출력
elif len(freq_list) > 1:
freq_list.sort()
print(freq_list[1])
# 범위
max_key = max(nums.keys())
min_key = min(nums.keys())
print(max_key - min_key)
딕셔너리를 사용했다.
파이썬의 반올림은 따로 import할 필요 없이 기본 내장 함수인 round()를 사용하면 된다.