[백준 2108] 통계학

권한·2025년 12월 29일

BOJ

목록 보기
27/40

N개의 수를 받아서 산술평균, 중앙값, 최빈값, 범위를 출력한다.

아이디어

  1. 산술평균은 소수점 이하 첫째 자리에서 반올림하므로 round로 반올림해준다.
  2. 숫자 개수를 2로 나누어 중앙 위치의 값(중앙값)을 구한다.
  3. 최댓값과 최소값을 찾아 범위를 구한다.
  4. 최빈값의 경우 여러개가 있다면 최빈값중 두번째로 작은 값을 출력한다.
    • get()을 통해 n이 딕셔너리에 없다면 0으로 값을 설정, 아니라면 받은 값에서 +1하여 딕셔너리 값을 수정한다.
    • items()로 키와 값을 받아 값중 최대값과 같은 경우만 temp리스트에 저장한다.
    • temp리스트를 정렬하고 길이가 1보다 길다면 두번째 값을, 아니라면 첫번째 값을 출력한다.
import sys
input = sys.stdin.readline

Ncount = {}
nums = [ int(input()) for _ in range(int(input())) ]
nums.sort()
Nlen = len(nums)

#산술 평균
print(round(sum(nums) / Nlen))

#중앙값
print(nums[(Nlen) // 2])

#최빈값
for n in nums:
    Ncount[n] = Ncount.get(n, 0) + 1
m = max(Ncount.values())
temp = [ k for k, v in Ncount.items() if v == m ]
temp.sort()

print(temp[1] if len(temp) > 1 else temp[0])

#범위 
print(max(nums) - min(nums))
profile
티스토리로 옮김

0개의 댓글