[백준] 2108: 통계학 (Python)

JiKwang Jeong·2021년 10월 7일
0
post-custom-banner

문제📖

풀이🙏

최빈값을 구하기 위해서 count 변수로 직접 각 입력값마다 저장하는 방법이나 여러 방법을 생각하였지만 시간초과를 받았다. 그래서 파이썬 라이브러리 Counter를 사용하기로 했다.

  • 산술 평균은 리스트에 넣은 데이터를 리스트의 크기로 나누어서 구했다.
  • 중간값은 리스트에 넣은 데이터를 정렬하고 정렬한 리스트 중 중간 데이터를 출력했다.
  • 최빈값은 Counter를 이용하여 빈도수가 가장 높은 숫자 2개를 구하고 data를 2개 이상 입력받고 빈도수가 같으면 작은 값을 출력한다.
  • 최대값 - 최소값은 리스트를 정렬하고 가장 뒤 - 가장 앞으로 출력한다.

코드💻

import sys
from collections import Counter
input = sys.stdin.readline

n = int(input())
data = []
for i in range(n):
    x = int(input())
    data.append(x)

data.sort()

# 산술 평균
print('%0.0f' % (sum(data)/n))
# 중간값
print(data[n//2])

# 가장 빈도수가 높은 숫자로 빈도수를 구한다.
# 빈도수가 높은 숫자 2개를 가져온다.
cnt = Counter(data).most_common(2) 

if len(data) > 1: # 데이터가 2개 이상 입력받을 경우
    if cnt[0][1] == cnt[1][1]:
        print(cnt[1][0])
    else:
        print(cnt[0][0])
else: # 데이터가 1개인 경우
    print(cnt[0][0])

# 최대값 - 최소값
print(data[n-1]-data[0])
profile
기억보다 기록, 난리보다 정리
post-custom-banner

0개의 댓글