홍우진의 개발 일기장

[백준] 2108번: 통계학 / 파이썬 본문

알고리즘/백준

[백준] 2108번: 통계학 / 파이썬

홍우진 2024. 12. 8. 15:45
728x90
반응형

문제 링크


 

https://www.acmicpc.net/problem/2108

 

 

풀이 코드


import sys
input = sys.stdin.readline

n = int(input())
a = [int(input()) for x in range(n)]   #리스트 컴프리헨션

#산술평균
print(round(sum(a)/len(a)))   
#중앙값
a.sort()   
print(a[len(a)//2])   

#최빈값
dic = dict()   #딕셔너리 생성
for i in a:   
    if i in dic:   #딕셔너리에 Key, Value 추가 및 증가
        dic[i] += 1   
    else:
        dic[i] = 1

maxval = []

for i in dic:
    if max(dic.values()) == dic[i]:   #max값 추출하여 maxval에 저장
        maxval.append(i)

if len(maxval) == 1:   #max값이 하나라면 출력, 두개 이상이면 두번째 출력.
    print(maxval[0])
else:
    print(maxval[1])

#범위
print(max(a)-min(a))

코드 해석


최빈값이 걸림돌이다.

딕셔너리를 사용하였다.

딕셔너리를 사용하여 카운팅 시 value값을 올려주고

max(value)의 Key를 출력하는 형식을 사용하였다. 

 
728x90
반응형
Comments