코딩테스트/백준

[백준][Python] 2108. 통계학

내만 2022. 7. 19. 15:23
728x90
반응형

 

 

 

 

 

 

🙆‍♂️문제


 

 

🙋‍♂️풀이


문제 그대로 첫째 줄에는 산술평균(일반적인 평균)을 소수점 첫째 자리에서 반올림

둘째 줄에서는 중앙값

셋째 줄에서는 최빈값(가장 많이 나타나는 값)

넷째 줄에서는 범위(최대값 - 최소값)을 출력하면 됩니다.

 

 

🚀 입력받기


import sys
n= int(sys.stdin.readline())
arr = [int(sys.stdin.readline()) for _ in range(n)]

sys 라이브러리를 import하여 빠르게 입력받습니다.

 

🚀 산술평균 출력


average = round(sum(arr)/n)
print(average)

평균은 구하기 쉽습니다.

모두 합한 값을 입력 갯수로 나누고 round함수를 통해 반올림 합니다.

 

 

🚀 중앙값 출력


arr.sort() 
mid = n//2
print(arr[mid])

sort 함수로 정렬 후 중간 인덱스 값을 구하고 2로 나눈 값을 출력합니다.

 

 

🚀 최빈값 출력


from collections import Counter

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

Counter 라이브러리를 improt하여 최빈값을 구합니다.

최빈값이 객체 형태로 저장됩니다.

{값 : 빈도 수}로 저장됩니다. 정렬을 해두었기에 빈도 수가 같은 값이여도 작은 수부터 정리되는데

0번 인덱스와 1번 인덱스의 빈도수 값이 같다면 그 다음 수를 출력

아니면 0번 인덱스를 출력합니다.

 

그리고 애초에 입력값이 하나면 그냥 출력합니다.

 

 

🚀 범위 출력


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

max함수와 min함수를 통해여 최대값 - 최소값을 했습니다.

 

728x90
반응형