2108번: 통계학 [Python]


일단 되게 하자

import sys
n = int(sys.stdin.readline())
v = []
d = {}
sum = 0

for i in range(n):
    tmp = int(sys.stdin.readline())
    sum += tmp
    v.append(tmp)
    if str(tmp) in d:
        d[str(tmp)] += 1
    else:
        d[str(tmp)] = 1

v = sorted(v)
sortedDic = sorted(d.items(), key=lambda x: x[1], reverse=True)
tmp = sortedDic[0][1]
mostFreq = []
for i in sortedDic:
    if tmp == i[1]:
        mostFreq.append(int(i[0]))
    else:
        break
mostFreq = sorted(mostFreq)

print(round(sum / n))
print(v[n // 2])
if len(mostFreq) > 1:
    print(mostFreq[1])
else: 
    print(mostFreq[0])
print(v[n - 1] - v[0])

빈도수 출력이 관건이었다. 빈도수는 딕셔너리를 이용해 키 벨류 형식으로 저장했고, 벨류를 기준으로 정렬한 다음, 최대 빈도의 키값만 따로 리스트로 구성해서, 출력했다.

좋은 웹페이지 즐겨찾기