[백준] 2108번 통계학 _ 문제 풀이

 


1. 문제

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

2. 풀이

숫자의 빈도는 dictionary를 이용하여 세줍니다. 정렬은 python 내장함수 sort 를 이용해줍니다.

python의 기본 내장함수 input을 사용하면 속도가 매우 느리기 때문에, 시간초과가 발생합니다. sys 모듈에 있는 sys.stdin.readline 함수를 사용해주면 손쉽게 문제를 해결해줄 수 있습니다.

import sys
arr = []
dict = {}
for _ in range(int(sys.stdin.readline())):
    val = int(sys.stdin.readline())
    arr.append(val)
    if dict.get(val, False):
        dict[val] += 1
    else:
        dict[val] = 1
arr.sort()

print(round(sum(arr)/len(arr)))
print(arr[len(arr)//2])
max_frequency = dict[max(dict,key=lambda x:dict[x])]
many_arr = sorted([key for key in dict if dict[key] == max_frequency])
print(many_arr[1 if len(many_arr) > 1 else 0])
print(arr[-1]-arr[0])