https://www.acmicpc.net/problem/2108
문제
수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자.
- 산술평균 : N개의 수들의 합을 N으로 나눈 값
- 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
- 최빈값 : N개의 수들 중 가장 많이 나타나는 값
- 범위 : N개의 수들 중 최댓값과 최솟값의 차이
N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오.
백준 2108 통계학 문제입니다.
파이썬에서는 sort함수가 있어서 편하게 구현할 수 있었습니다.
사실 아직 실버 난이도는 어렵게 푸는 것 같습니다.
import sys
from collections import Counter
numbers = []
N = int(sys.stdin.readline())
for i in range(N):
a = int(sys.stdin.readline())
numbers.append(a)
numbers.sort()
cnt = Counter(numbers).most_common()
print(cnt)
average = round(sum(numbers) / len(numbers))
median = numbers[len(numbers)//2]
if len(numbers) > 1:
if cnt[0][1] == cnt[1][1]:
mode = cnt[1][0]
else:
mode = cnt[0][0]
else:
mode = cnt[0][0]
range_ = max(numbers) - min(numbers)
print(average)
print( median)
print(mode)
print(range_ )
아래 코드에서 numbers를 정렬하기까지만 하면
import sys
from collections import Counter
numbers = []
N = int(sys.stdin.readline())
for i in range(N):
a = int(sys.stdin.readline())
numbers.append(a)
numbers.sort()
산술평균, 중앙값, 범위는 간단하게 구현할 수 있습니다.
최빈값의 경우에는 Counter를 이용하여 구현하였는데
문제풀면서 지금 실력으로는 이런 모듈없이는 불가능하다고 느꼈습니다.
'백준 알고리즘' 카테고리의 다른 글
파이썬) 백준 알고리즘 | 11047번 : 동전0 (0) | 2022.01.27 |
---|---|
파이썬) 백준 알고리즘 | 11399번 : ATM (0) | 2022.01.27 |
파이썬) 백준 알고리즘 | 3036번 : 링 (0) | 2022.01.21 |
파이썬) 백준 알고리즘 | 1676번 : 팩토리얼 0의 개수 (0) | 2022.01.21 |
파이썬) 백준 알고리즘 | 4673번 : 셀프 넘버 (0) | 2022.01.07 |
댓글