반응형
SMALL
알고리즘 태그
[정렬]
태그 설명
정렬이란 데이터의 집합을 어떠한 기준의 대소관계를 따져 일정한 순서로 줄지어 세우는것
문제
백준 문제 - 통계학
링크: 통계학
문제설명
수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자.
1. 산술평균 : N개의 수들의 합을 N으로 나눈 값
2. 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
3. 최빈값 : N개의 수들 중 가장 많이 나타나는 값
4. 범위 : N개의 수들 중 최댓값과 최솟값의 차이
N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오.
정렬문제지만 구현과 크게 다르지 않다. 여기서 주의할것은 최빈값만 잘 구하면 무사통과일 것 같은 느낌적인 느낌이 온다.
예제 입력 1
1
4000
예제 출력 1
4000
4000
4000
0
예제 입력 2
5
-1
-2
-3
-1
-2
예제 출력 2
-2
-2
-1
2
📃 소스코드 및 설명
from collections import Counter
# import sys
N = int(sys.stdin.readline())
numbers = []
for _ in range(N):
numbers.append(int(sys.stdin.readline()))
numbers.sort()
# Counter함수를 사용하여 최빈값을 구할 수 있다
# 딕셔너리 형태로 반환
# most_common함수를 통해서 리스트+튜플형으로 최빈값을 구할 수 있다.
mode_numbers = Counter(numbers).most_common()
print(round(sum(numbers)/N))
print(numbers[N//2])
if len(mode_numbers) > 1:
if mode_numbers[0][1] == mode_numbers[1][1]:
print(mode_numbers[1][0])
else:
print(mode_numbers[0][0])
else:
print(mode_numbers[0][0])
print(max(numbers)-min(numbers))
* 문제를 풀기 시작하면서 느낀점인데, 로직은 통과가 되더라도 가끔 입력을 받는 부분(input())에서
시간초과가 발생할 때가 있다. 그걸 방지하기 위해서
sys를 import해서 sys.stdin.readline() 함수를 통해서 진행해야할것같다!
반응형
LIST
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[BOJ][Python] 11004번 - K번째 수[정렬- 실버 5티어] (0) | 2022.03.14 |
---|---|
[BOJ][Python] 7795번 - 먹을 것인가 먹힐 것인가[정렬- 실버 3티어] (0) | 2022.03.13 |
[BOJ][Python] 11652번 - 카드 [정렬- 실버 4티어] (0) | 2022.03.13 |
[BOJ][Python] 10816번 - 숫자카드2[정렬- 실버 4티어] (0) | 2022.03.13 |
[BOJ][Python] 10815번 - 숫자카드[정렬- 실버 4티어] (0) | 2022.03.13 |