해피 코딩!

[백준] 2108 통계학 본문

알고리즘

[백준] 2108 통계학

지속가능한 성장을 2020. 12. 31. 03:14
from collections import defaultdict
import statistics
import sys
dic = defaultdict(int)
lst = []
for _ in range(int(sys.stdin.readline())):
    value = int(sys.stdin.readline())
    lst.append(value)
    dic[value] +=1

#  1. 산술 평균 -> 소수점 이하 앞 자리 반올림 값
sum_var = 0
div = 0
for k, v in dic.items():
    div += v
    sum_var += (k*v)
print(round(sum_var/div))

# 2. 중앙 값
print(statistics.median(lst))

# 3. 최빈값 여러 개 있을 때에는 최빈값 중 두 번째로 작은 값
sorted_dic=  sorted(dic.items(), key= lambda x:(x[1], -x[0]), reverse=True)

if len(sorted_dic) ==1:
    print(sorted_dic[0][0])
else:
    if sorted_dic[0][1] == sorted_dic[1][1]:
        print(sorted_dic[1][0])
    else:
        print(sorted_dic[0][0])

page_4 = 0
sorted_dic = sorted(dic, key=lambda x:x)
for i in range(sorted_dic[0], sorted_dic[-1]):
    page_4 +=1

print(page_4)

푸는데 한 시간 이상의 시간이 걸릴 줄 예상하지 못한 문제이다

  1. 산술 평균 -> 소수점 이하 앞 자리 반올림 값
    반올림 값을 체크하지 못한 실수가 컸다.

카운트를 하기 위하여 defaultdict을 사용하였는데 최빈값을 구하는 세 번째 출력 값에서는 어쩔 수 없이 리스트를 사용하였으며 메모리 초과가 나올 줄 알았는데 다행히 나오지 않았다.

'알고리즘' 카테고리의 다른 글

[백준] 9012번 괄호  (0) 2021.01.06
[백준] 1541번 잃어버린 괄호  (0) 2021.01.01
[백준] 11399 ATM  (0) 2020.12.31
[백준] 12865번 평범한 배낭  (0) 2020.12.30
[백준] 10989번 수 정렬하기 3  (0) 2020.12.28
Comments