Bakjoon 2108. 통계학

배혜진·2023년 5월 21일

Baekjoon

목록 보기
9/9

오랜만에 돌아온 벨로그 ^-^

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

[문제]

[풀이과정]

  1. 이번에 스터디를 하면서 배운것인데, import sys를 통해 입력을 input 대신 sys.stdin.readline()을 이용하면 시간을 절약할 수 있다. 그래서 import sys를 하여 앞으로의 input은 모두 sys.stdin.readline()을 통해 코딩 할 것이다.
  2. 수를 받아와야하는데, 정렬의 문제도 발생하게 되므로 list를 통해 구현해야 한다.
  3. 다른 부분은 딱히 건들 것이 없는데, 최빈값이 가장 고난이도로 보인다. 최빈값은 list를 하나 더 만들어서 가장 많이 존재하는 값을 count를 통해 구한 뒤 리스트에 append해주는 방식으로 구현하려 했으나, 이 방법은 시간에 자유롭지 못하다.
  4. 따라서 collections 모듈을 이용해 Counter의 most_common 함수를 이용하여 문제를 해결했다.

[최종코드]

import sys
from collections import Counter
s=int(sys.stdin.readline())
lista=[]

for i in range(s):
    lista.append(int(sys.stdin.readline()))



print(round(sum(lista)/s))
lista.sort()
print(lista[int(s/2)])


count=Counter(lista)
order=count.most_common()
max_frequency=order[0][1]

fq=[]
for i in order:
    if i[1] == max_frequency:
        fq.append(i[0])

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

print(lista[-1]-lista[0])

profile
HYU🦁 Information System 22✨

0개의 댓글