-
[Python] 백준 2108 통계학Python_알고리즘 2021. 7. 31. 00:41
문제 바로가기
문제분석
# 산술평균 : N개의 수들의 합을 N으로 나눈 값
# 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
# 최빈값 : N개의 수들 중 가장 많이 나타나는 값
# 범위 : N개의 수들 중 최댓값과 최솟값의 차이
문제풀이
import sys input = sys.stdin.readline n = int(input()) num = [] # [1, 3, 8, -2, 2] for _ in range(n): num.append(int(input())) # 산술평균 print(round(sum(num) // n)) # 중앙값 num.sort() print(num[n//2]) # 최빈값 from collections import Counter mc = Counter(num).most_common() if len(num) > 1: if mc[0][1] == mc[1][1]: print(mc[1][0]) else: print(mc[0][0]) else: print(num[0]) # 범위 print(num[-1] - num[0])
# 파이썬에서 round 함수로 0.5를 반올림할 때, 정수 부분이 짝수면 반내림이 되고, 홀수면 반올림이 된다.
# 그 이유는 파이썬에서 사용하고 있는 round 내장 함수는 round_half_up 방식이 아니라 round_half_even 방식을 채택하고 있기 때문.
# ex)즉 3.5의 경우에는 반올림이 되서 4가 되고, 4.5의 경우에는 반내림이 되어서 4가 되는 것.
# 이를 해결하기 위해, 반올림 오차가 없는 고정소수점을 사용하려면 decimal 모듈의 Decimal을 사용하면 된다. Decimal은 숫자를 10진수로 처리하여
# 정확한 소수점 자릿수를 표현해준다.# 최빈값 구하기위한 클래스 임포트
# dict의 하위 클래스로 리스트나 튜플에서 각 데이터가 등장한 횟수를 사전형식으로 돌려줌
# 빈도수가 높은 순으로 반환함.# 최빈값의 빈도수를 비교하여, 2개이상의 최빈값이 있으면 두번째로 작은것을 출력
# 만약 입력값이 하나면 그게 최빈값이 되므로 예외처리 됨
'Python_알고리즘' 카테고리의 다른 글
[Python] 백준 9663 N-Queen (0) 2021.08.04 [Python] 백준 15650 N과 M (2) (0) 2021.08.03 [Python] 백준 1260 DFS와 BFS (0) 2021.07.30 [Python] 백준 1874 스택 수열 (0) 2021.07.27 [Python] 백준 4949 균형잡힌 세상 (0) 2021.07.24