JiSoo's Devlog

[백준 / 파이썬] 2108번 통계학 본문

코테준비

[백준 / 파이썬] 2108번 통계학

지숭숭숭 2024. 1. 13. 20:40

import sys
from collections import Counter

n = int(sys.stdin.readline())
a = []

for i in range(n):
    a.append(int(sys.stdin.readline()))

def mean(num):
    return round(sum(num)/len(num))
def median(num):
    num.sort()
    mid = num[len(num)//2]
    return mid
def mode(num):
    d = Counter(num)
    k = d.most_common()

    if len(num) > 1:
        if k[0][1] == k[1][1]:
            mod = k[1][0]
        else:
            mod = k[0][0]
    else:
        mod = k[0][0]
    return mod
def scope(num):
    return max(num) - min(num)

print(mean(a))
print(median(a))
print(mode(a))
print(scope(a))

 

최빈값 구하는 부분이 어려웠던 문제 같다

most_common 함수로 최빈값을 찾을 수 있는데 같은 빈도를 가지는 수는 원래 시퀀스에 있는 순서대로 나열된다

k[0][1]은 가장 먼저 나온 최빈값 빈도수이고 k[1][1]은 그다음 최빈값의 빈도수

이 두 개가 같으면 최빈값이 2개 이상이라는 건데 두 번째로 작은 값을 골라야 하기 때문에 k[1][0] 저장

 

728x90