반응형
개념
2020.11.24 - [Algorithm & Data structure] - [알고리즘] 선택정렬, 삽입정렬, 퀵정렬, 계수정렬 정리
코드
- 정렬 시킨 이후에 문제를 풀어야한다.
- 최빈 값 구현이 까다롭다.
# 통계학 분류
# 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
# 2 초 256 MB 43498 10336 8479 26.622%
# 문제
# 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자.
# 산술평균 : N개의 수들의 합을 N으로 나눈 값
# 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
# 최빈값 : N개의 수들 중 가장 많이 나타나는 값
# 범위 : N개의 수들 중 최댓값과 최솟값의 차이
# N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오.
# 입력
# 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.
# 출력
# 첫째 줄에는 산술평균을 출력한다. 소수점 이하 첫째 자리에서 반올림한 값을 출력한다.
# 둘째 줄에는 중앙값을 출력한다.
# 셋째 줄에는 최빈값을 출력한다. 여러 개 있을 때에는 최빈값 중 두 번째로 작은 값을 출력한다.
# 넷째 줄에는 범위를 출력한다.
import sys
n = int(sys.stdin.readline().rstrip())
arr = []
for _ in range(n):
arr.append(int(sys.stdin.readline().rstrip()))
arr.sort()
# 산술 평균
print(round(sum(arr) / n))
# 중간 값
print(arr[ len(arr) // 2 ])
# 최빈값
value = {}
for i in range(len(arr)):
if i == 0:
value[arr[i]] = 1
else:
if arr[i] in value.keys():
value[arr[i]] = value[arr[i]] + 1
else:
value[arr[i]] = 1
max_arr = []
max_count = max(value.values())
for key in value.keys():
if value[key] == max_count:
max_arr.append(key)
if len(max_arr) > 1:
print(max_arr[1])
else:
print(max_arr[0])
# 범위
print(max(arr) - min(arr))
'코딩테스트 > 파이썬' 카테고리의 다른 글
[백준] [조합] N과 M(2) 15650 (파이썬) (0) | 2021.03.15 |
---|---|
[백준] 색종이 만들기 2630 (파이썬) (0) | 2021.03.15 |
[백준] [우선탐색] DFS와 BFS 1260 (파이썬) (0) | 2021.03.14 |
[백준] [큐,덱] 큐2 18258 (파이썬) (0) | 2021.03.14 |
[백준] [스택] 제로 10773 (파이썬) (시간 초과 방지 코드) (0) | 2021.03.14 |