728x90
반응형
메모리: 60012 KB, 시간: 392 ms
구현, 수학, 정렬
수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자.
- 산술평균 : N개의 수들의 합을 N으로 나눈 값
- 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
- 최빈값 : N개의 수들 중 가장 많이 나타나는 값
- 범위 : N개의 수들 중 최댓값과 최솟값의 차이
N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오.
첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.
첫째 줄에는 산술평균을 출력한다. 소수점 이하 첫째 자리에서 반올림한 값을 출력한다.
둘째 줄에는 중앙값을 출력한다.
셋째 줄에는 최빈값을 출력한다. 여러 개 있을 때에는 최빈값 중 두 번째로 작은 값을 출력한다.
넷째 줄에는 범위를 출력한다.
예제 입력 1 복사
5
1
3
8
-2
2
예제 출력 1 복사
2
2
1
10
예제 입력 2 복사
1
4000
예제 출력 2 복사
4000
4000
4000
0
예제 입력 3 복사
5
-1
-2
-3
-1
-2
예제 출력 3 복사
-2
-2
-1
2
예제 입력 4 복사
3
0
0
-1
예제 출력 4 복사
0
0
0
1
<풀이>
import sys
import math
from collections import Counter
input = sys.stdin.readline
N = int(input().strip())
li = []
for i in range(N):
li.append(int(input().strip()))
c = Counter(li)
max_c = max(c.values())
modes = [k for k,v in c.items() if v == max_c]
sorted_modes = sorted(modes)
one = round(sum(li)/len(li))
tmp = sorted(li)
two = tmp[len(tmp)//2]
if len(sorted_modes) == 1:
three = sorted_modes[0]
else:
three = sorted_modes[1]
four = tmp[-1] - tmp[0]
print(one)
print(two)
print(three)
print(four)
반응형
'코딩 > 백준' 카테고리의 다른 글
[백준][Silver V] 수 정렬하기 2 - 2751번 파이썬 문제풀이 (0) | 2024.12.16 |
---|---|
[백준][실버4]카드2 - 2164번 파이썬 문제풀이 (2) | 2024.12.14 |
[백준][Silver III] 소수 구하기 - 1929번 파이썬 문제풀이 (2) | 2024.12.10 |
[백준][Silver III] 분수 합 - 1735번 파이썬 문제풀이 (1) | 2024.12.08 |
[백준][Silver IV] 숫자 카드 2 - 10816번 파이썬 문제풀이 (0) | 2024.12.06 |