728x90
https://www.acmicpc.net/problem/2108
합계, 중앙값, 최빈값, 범위
위 4가지만 구하면 되는 문제이다. 심지어 N도 홀수로 주어져서 중앙값 구하기가 더 수월하다
그럼에도 불구하고, 이렇게 글을 작성하는 이유는 바로 'Counter' 때문이다.
Counter를 사용하게 되면 리스트에 해당 값이 몇번 등장했는지 알아서 count 해준다!!
most_common이라는 함수를 호출하게 되면 (키 : 값) 쌍으로 이루어진 튜플들이 모인 객체를 반환하는데, 가장 많이 등장하는 것부터 순서대로 등장한다.
여기서 '키'는 배열의 원소를 의미하고, '값'은 등장 빈도수를 의미한다.
만약 등장하는 빈도가 동일하다면, Counter에 입력으로 들어온 순서대로 반환된다.
import sys
#from collections import deque
#sys.setrecursionlimit(10**6)
from collections import Counter
input = sys.stdin.readline
if __name__ == "__main__":
n = int(input())
arr=[]
for _ in range(n):
num = int(input())
arr.append(num)
arr.sort()
if n>=2:
modes = Counter(arr).most_common(2)
if modes[0][1] == modes[1][1]:
mode = modes[1][0]
else:
mode = modes[0][0]
else: #n==1
mode = arr[0]
total = round(sum(arr)/(n*1.0))
mid = n//2
middle = arr[mid]
arrange = abs(arr[0]-arr[-1])
print(total, middle, mode, arrange, sep='\n')
728x90
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/파이썬] 17144번 미세먼지 안녕! (0) | 2023.05.04 |
---|---|
[백준/파이썬] 2877번 4와 7 (0) | 2023.04.26 |
[백준/파이썬] 2941번 크로아티아 알파벳 (0) | 2023.03.28 |
[백준/파이썬] 11758번 CCW (0) | 2023.03.23 |
[백준/파이썬] 1963번 소수 경로 (0) | 2023.03.21 |