For Programmer
백준 2108번 파이썬 문제풀이(통계학) 본문
728x90
조금 귀찮은 구현이다. 특히 최빈값 구하는게 가장 귀찮다. 나는 계수정렬에서 사용하는 방식인 미리 count 리스트를 8000개 만들어 놓고 개수를 추가해서 최대 개수가 있는 인덱스를 찾는 방식으로 하였다.
import sys
# 입력 빠르게 받기
input = sys.stdin.readline
N = int(input())
sum_ = 0 # 합계저장
middle = 0
count_list = [0] * 8001
mode = 0
arr = []
for i in range(N):
temp = int(input())
# 전체합
sum_ += temp
# 입력받은 값을 리스트에 추가
arr.append(temp)
# 최빈값 구하기 위해 count 저장(음수도 저장하기 위해 4000씩 밀어주고 출력할때 빼준다.)
count_list[temp + 4000] += 1
arr.sort() # 정렬
# 최빈값 구하기
# 만약 최빈값이 두개이상이라면
if count_list.count(max(count_list)) > 1:
mode_index = count_list.index(max(count_list)) # 첫번째 최빈값의 인덱스를 저장한 후
# 첫번째 인덱스 이후에 있는 최빈값을 반환한다.
mode = (count_list.index(max(count_list), mode_index + 1)) - 4000
# 만약 최빈값이 하나라면
else:
mode = count_list.index(max(count_list)) - 4000 # 해당 최빈값을 추가
# 산술평균 구하기
# 만약 합계를 나눈 값이 -0.xxx 가나온다면
if -1 < sum_ / N <= 0:
result = 0 # 해당 값을 0으로 바꿔준다.(-0으로 나오는 것을 방지)
else: # 나머지 경우는 반올림 해준다.
result = round(sum_ / N, 0)
print(f'{result :.0f}') # 산술평균 출력
print(arr[N // 2]) # 중앙값 출력
print(mode) # 최빈값 출력
print(arr[-1] - arr[0]) # 범위출력
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 1417번 파이썬 문제풀이(국회의원 선거) (0) | 2022.02.22 |
---|---|
백준 2961번 파이썬 문제풀이(도영이가 만든 맛있는 음식) (0) | 2022.02.22 |
swea 13549번 파이썬 문제풀이(최대공약수의 최대화) (0) | 2022.02.21 |
백준 14232번 파이썬 문제풀이(보석 도둑) (0) | 2022.02.20 |
백준 7806번 파이썬 문제풀이(GCD!) (0) | 2022.02.20 |
Comments