Algorithm/Problems

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

공부좀하시졍 2022. 11. 8. 15:27

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

 

2108번: 통계학

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

www.acmicpc.net

import sys
from collections import Counter

input = sys.stdin.readline

n = int(input())

nums = []

for _ in range(n):
  nums.append(int(input()))

nums.sort()

# 산술평균
print(round(sum(nums)/n))

# 중앙값
print(nums[n//2])

# 최빈값
cnt = Counter(nums).most_common()
if len(nums) > 1:
  if cnt[0][1] == cnt[1][1]:
    print(cnt[1][0])
  else:
    print(cnt[0][0])
else:
  print(cnt[0][0])
# 범위
print(max(nums)-min(nums))

간단한 문제라고 생각햇지만 최빈값 구하는 것에서 애를 먹었다😅

Counter의 most_common()을 사용해서 입력된 값들의 개수를 구할 수 있다. most_common()은 가장 많이 나오는 요소들을 반환하기 때문에 앞 두 값만 비교해주면 된다.