본문 바로가기
파이썬알고리즘

백준 2108 통계학 (파이썬)

by zho 2024. 9. 23.

https://www.acmicpc.net/problem/2108

 

문제핵심

1. 산술평균, 중앙값 최빈값, 범위 총 4가지 값을 구해야 한다.

2. 최빈값을 구하는 방법을 잘 고려할 것(저는 dict를 사용했습니다)

 

풀이

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

#1.mean
mean = round(sum(nums)/n)
print(mean)
#2.median
nums.sort()
median = nums[n//2]
print(median)
#3.mode
dic = dict()
for i in nums:
    if i in dic:
        dic[i] += 1
    else:
        dic[i] = 1

maxinum_mode_value = max(dic.values())
max_mode_list = []

for i in dic:
    if dic[i] == maxinum_mode_value:
        max_mode_list.append(i)

if len(max_mode_list) != 1:
    print(max_mode_list[1])
else:
    print(max_mode_list[0])
#4.range
range = nums[-1] - nums[0]
print(range)

 

첫번째 예제


dict를 위와 같은 방법으로 사용할 경우 첫 번째 예제에서 dic는 다음과 같이 저장됩니다.

{-2: 1, 1: 1, 2: 1, 3: 1, 8: 1}

 

따라서 문제의 조건에 맞게 같은 빈도수를 가지고 있는 값들이 여러 개(2개 이상)이기 때문에 두 번째로 작은 값을 출력해 줍니다.

728x90