알고리즘

<백준> 2108번 파이썬 알고리즘

changha. 2021. 7. 7. 15:41
import sys
from collections import Counter
n = int(sys.stdin.readline())
arr = []
for i in range(n):
    arr.append(int(sys.stdin.readline()))
## 위까지 input

def avg(arr):
    return round(sum(arr)/n)
def mid(arr):
    l = len(arr)
    arr.sort()
    return arr[l//2]
def many(arr):
    arr.sort()
    nums_s = Counter(arr).most_common()
    if len(nums_s) > 1:
        if nums_s[0][1] == nums_s[1][1]:
            return nums_s[1][0]
        else:
            return nums_s[0][0]
    else:
        return nums_s[0][0]
    
def range(arr):
    _min = min(arr)
    _max = max(arr)
    if _max > 0:
        return _max - _min
    else:
        return -_min + _max
print(avg(arr))
print(mid(arr))
print(many(arr))
print(range(arr))

 

최빈값 부분이 어려웠다

Counter.most_common을 통해 최빈값을 튜플 형태로 받은 후 

만약 갯수가 1개 이상이면 첫번째와 두번째 비교를 통해 값을 보내면 된다