내 맴
[ 백준 ] 2108번 : 통계학 (파이썬) 본문
728x90
문제 )
https://www.acmicpc.net/problem/2108
2108번: 통계학
첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.
www.acmicpc.net
[ 풀이 ]
산술평균, 중앙값, 범위를 구하는 방법은 매우 쉬웠다.
최빈값을 구하기 위해서 Collections모듈의 Counter class를 이용해주었다.
< 구하는 법 >
우선, 입력한 N개의 숫자 list를 정렬해주고 시작
✔ 산술평균 : list의 전체합을 N으로 나눠준 값이다. 소수점 이하 첫째 자리에서 반올림 해야하므로 round함수를 이용해준다.
✔ 중앙값 : list를 정렬했으므로 list의 중간 index에 있는 값을 찾아준다.
✔ 최빈값 : 입력하는 수 N이 1개이면 그냥 출력하지만 여러개인 경우에는 2번째 작은 값을 출력해야한다.
✔ 범위 : 정렬된 list의 맨끝 값(최댓값)에서 맨 앞의 값(최솟값)을 빼준다
- python code
from collections import Counter
import sys
input= sys.stdin.readline
def solve(num):
num.sort()
print(round(sum(num)/N)) # 산술평균
print(num[N//2]) #중앙값
# 최빈값
if N==1:
print(num[0])
else:
lot=Counter(num).most_common(2)
if lot[0][1]==lot[1][1]:
print(lot[1][0])
else:
print(lot[0][0])
print(num[N-1]-num[0])
N=int(input())
num=[]
for i in range(N):
num.append(int(sys.stdin.readline()))
solve(num)
728x90
'개발 공부 > Algorithm' 카테고리의 다른 글
[ 백준 ] 1003번 : 피보나치 함수 (파이썬) (0) | 2020.05.22 |
---|---|
[ 백준 ] 2748번 : 피보나치 수 2 (파이썬) (0) | 2020.05.19 |
[ 백준 ] 14889번 : 스타트와 링크 (파이썬) (0) | 2020.05.16 |
[ 백준 ] 14888번 : 연산자 끼워넣기 (파이썬) (0) | 2020.05.14 |
[ 백준 ] 15652번 : N과 M (4) (파이썬) (0) | 2020.05.13 |