백준 2108 통계학 (파이썬)


2108 통계학


접근방식

  • 숫자의 통계를 내는 문제로 내장함수와 모듈을 적절히 사용하면 되었다.
  • numpy를 사용하고 싶지만 사용시 런타임 오류가 난다😭
  • 산술평균, 중앙값, 최빈값, 범위 중 가장 신경써야 할 것은 최빈값 구하기였는데 구글링 결과 대부분이 collections 패키지의 Counter 모듈을 사용하여 최빈값을 체크했다. (사용방법은 코드에서 확인할 수 있다)

파이썬 코드

import sys
from collections import Counter

n = int(sys.stdin.readline())
nums = []
for i in range(n):
    nums.append(int(sys.stdin.readline()))

# 중앙값을 위해, 또 최빈값이 여러 개 일시 두 번째 작은 값을 찾기위해 정렬한다.
nums.sort()
def mode(nums):
    # (숫자,카운팅)으로 이뤄진 튜플이 생성된다.
    # 카운팅의 큰 순서대로 나열되며 같은 카운팅이 있을시 원래 배열의 순서대로 나열된다.
    mode_num = Counter(nums).most_common()
    if len(nums) > 1:
        # 최빈값 top2를 비교한다.
        if mode_num[0][1] == mode_num[1][1]:
            # 두가지의 최빈값이 같을 시 두 번째 작은 값을 출력한다.
            mod = mode_num[1][0]
        # 최빈 값이 하나이다.
        else:
            mod = mode_num[0][0]
    else:
        mod = mode_num[0][0]
    return mod

print(round(sum(nums)/n))
print(nums[n//2])
print(mode(nums))
print(max(nums)-min(nums))

기억해둘 점

  • Counter(nums).most_common() 유용한 모듈을 기억해두기





© 2020.09. by 다로

Powered by theorydb