백준 2108번 풀이

문제

산술평균, 최빈값, 중앙값, 범위 출력하기

Reference

https://jiwon-coding.tistory.com/8 ([백준] 2108번 통계학 파이썬(python))

풀이

아니 R이랑 엑셀 냅두고 왜… 걔네는 장식인가 

여기서 얘기하는 산술평균이 우리가 일반적으로 얘기하는 평균이다. 평균은 산술/기하/조화평균이 있는데 이건 나중에 얘기하도록 하자… 아무튼, 그래서 4가지 요소를 어떻게 구하느냐… 평균은 일반적인 그 평균이 ‘맞다’. 중앙값은 말 그대로 정렬된 배열의 가운데에 있는 값이고, 최빈값은 배열에서 제일 많은 값(단, 여러개일 경우 두번째로 작은거), 범위는 최대-최소 하면 된다.

근데 여기서 최빈값이 끝판왕임.

import sys
from collections import Counter

N = int(sys.stdin.readline())
arr = []

for _ in range(N):
    arr.append(int(sys.stdin.readline()))

average = round(sum(arr)/N)
print(average)
# Average

arr.sort()
median = arr[N // 2]
print(median)
# Median

count_array = Counter(arr).most_common()
if len(count_array) > 1 and count_array[0][1] == count_array[1][1]:
    print(count_array[1][0])
else: 
    print(count_array[0][0])

range = max(arr) - min(arr)
print(range)

저 콜렉션 저거는 더 찾아보고 알려드림. 한가지 확실한건 저게 있어서 그나마 코드가 저렇게 짧은겁니다. ㄹㅇ임.

  • 평균: 다 더해서 배열 길이로 나눈다
  • 중앙값: 배열을 정렬한 다음 배열 길이 // 2의 값을 가져온다. (길이가 5면 2, 7이면 3 이런 식. 파이썬은 0부터 센다)
  • 최빈값: 어레이를 하나 만들건데 배열 안에 들어있는 값과 몇개인지가 들어가게 된다. 이 배열을 비교해서 옆에 있는 애랑 개수가 같으면 두번째 놈을 출력한다.
  • 범위: 최댓값-최솟값(개심플)

엥? 어떻게 나오길래 저걸로 끝임?

[(-2, 2), (-1, 2), (-3, 1)]

이렇게 나온다. 오른쪽 값이 개수인데, 그게 같은 것끼리 정렬하고 큰 그림을 그리는 식이라 저걸로 처리된 것.

결론: 엑셀 쓰자 결론 에반데