반응형
문제
https://www.acmicpc.net/problem/2108
코드
from collections import Counter
import sys
n = int(sys.stdin.readline())
num = []
mode = []
for _ in range(n):
num.append(int(sys.stdin.readline()))
num_most = Counter(num).most_common()
num.sort()
print(round((sum(num)/n)))
print(num[n//2])
for i in num_most:
if i[1] == num_most[0][1]:
mode.append(i[0])
else:
break
if len(mode) == 1:
print(mode[0])
else:
mode.sort()
print(mode[1])
print(max(num)-min(num))
설명
처음에는 numpy를 이용하여 풀려고 했었는데,
아쉽게도 외부 모듈은 사용이 불가능했다.
그래서 처음으로 Counter라는 모듈을 사용해봤다.
수의 개수를 카운트해서 최빈값을 찾을 수 있었다.
이후 산술평균은 전체 수를 더한 것에서 n으로 나눈 값을 round해주어 반올림했고,
중앙값은 인덱스의 중앙값을 구해서(n을 2로 나누어서) 출력했으며,
최빈값의 경우는 mode의 개수가 1개이면 그냥 출력하고,
2개 이상이면 정렬을 해서 2번째로 작은 값을 출력해주었다.
범위의 경우는 가장 큰 수에서 작은 수를 빼주어서 출력하였다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 11650: 좌표 정렬하기 (0) | 2023.01.06 |
---|---|
[파이썬, Python] 백준 1427: 소트인사이드 (0) | 2023.01.05 |
[파이썬, Python] 백준 10989: 수 정렬하기 3 (0) | 2023.01.03 |
[파이썬, Python] 백준 2751: 수 정렬하기 2 (0) | 2023.01.02 |
[파이썬, Python] 백준 25305: 커트라인 (2) | 2023.01.01 |