[백준] #2108 통계학 python

2022. 12. 27. 20:12

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

 

2108번: 통계학

첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.

www.acmicpc.net

 

📕 설명 📕

 

  • 산술평균 : N개의 수들의 합을 N으로 나눈 값
  • 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
  • 최빈값 : N개의 수들 중 가장 많이 나타나는 값
  • 범위 : N개의 수들 중 최댓값과 최솟값의 차이

*** 최빈값은 Counter를 이용하여 풀이하였다.

 

 

🧑🏻‍💻 나의 풀이 🧑🏻‍💻

from collections import Counter
import sys
N = int(input())
src = []
for _ in range(N):
    src.append(int(sys.stdin.readline()))

middle_val_index = N // 2
src.sort()

C_src = Counter(src).most_common(2)
num = 0
if N == 1:
    num = src[0]
else:
    if C_src[0][1] == C_src[1][1]:
        num = C_src[1][0]
    else:
        num = C_src[0][0]
print(round(sum(src)/N))
print(src[middle_val_index])
print(num)
print(src[N-1] - src[0])

BELATED ARTICLES

more