Algorithm/백준

[백준/Python] 통계학

poppy 2021. 8. 30. 15:00
반응형

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

n = int(sys.stdin.readline()) # 수의 개수
nums = [] # 숫자 리스트

# 숫자 입력 받기
for _ in range(n):
	nums.append(int(sys.stdin.readline()))

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

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

# 최빈값
count = Counter(nums).most_common()
if len(count) > 1 and count[0][1] == count[1][1]: # 최빈값이 두 개 이상인 경우 두번째로 작은 값 출력
    print(count[1][0])
else:
    print(count[0][0])

# 범위
print(max(nums) - min(nums))

 

[ 배운 점 ]

이 문제를 통해 처음 Counter 를 써본 것 같다. Couter 클래스를 사용하면 주어진 단어나 리스트에서 가장 많이 등장하는 요소와 요소의 등장 횟수를 알 수 있습니다. 다음과 같이 사용할 수 있습니다. 

from collections import Counter

Counter('hello world').most_common() 
# [('l', 3), ('o', 2), ('h', 1), ('e', 1), (' ', 1), ('w', 1), ('r', 1), ('d', 1)]
반응형

'Algorithm > 백준' 카테고리의 다른 글

[백준/Python] 좌표 압축  (0) 2021.09.08
[백준/Python] 단어 정렬  (0) 2021.09.06
[백준/Python] 영화감독 숌  (0) 2021.08.25
[백준/Python] 체스판 다시 칠하기  (0) 2021.08.24
[백준/Python] 덩치  (0) 2021.08.24