반응형
문제: https://www.acmicpc.net/problem/2108
정답:
from collections import Counter
import sys
n = int(sys.stdin.readline())
array = []
for i in range(n):
array.append(int(sys.stdin.readline()))
# 산술평균
print(round(sum(array)/n))
# 중앙값
sorted_array = sorted(array)
print(sorted_array[n//2])
# 최빈값
def modefinder(array):
c = Counter(array)
order = c.most_common()
maximum = order[0][1]
modes = []
for num in order:
if num[1] == maximum:
modes.append(num[0])
return modes
result = modefinder(array)
if len(result) >= 2:
print(sorted(result)[1])
else:
print(result[0])
# 범위
range = (max(array) - min(array))
print(range)
후기:
이 문제에서 최빈값을 구하는데 시간이 많이 걸렸다. 처음엔 collections 모듈의 Counter 클래스를 사용하지 않고
구하려고 했지만 잘 되지 않았고, 구글링을 해서 Counter 클래스를 사용해 구했다.
나머지 평균, 중앙값, 범위는 큰 어려움 없이 해결했다.
앞으로 알고리즘 문제를 풀때는 2시간 시간제한을 두고, 풀리지 않는다면 내가 풀지 못하는 문제라고 판단하고
구글링을 해서 답을 이해하는 식으로 문제를 풀어나가야 할 것 같다.
단, 구글링을 했던 문제는 며칠 텀을 두고 다시 풀어보는 방식으로 공부를할 계획이다.
무작정 풀다보니 한 문제에 할애하는 시간도 너무 많고, 스스로 지치기도 하는 문제가 발생해서 방식을 바꿔보기로 했다.
반응형
'Python 코딩테스트' 카테고리의 다른 글
정렬: 백준 11651 파이썬 (0) | 2021.08.29 |
---|---|
정렬: 백준 11650 파이썬 (0) | 2021.08.29 |
정렬: 백준 18868 파이썬 (0) | 2021.08.23 |
정렬: 백준 11004 파이썬 (0) | 2021.08.23 |
DFS/BFS: 백준 1260 파이썬 (0) | 2021.08.18 |