728x90
< 기존 풀이 >
시간 초과 때문에 문제 해결을 못했다. 특히 평균을 구하는 부분과, 최빈값을 구하는 부분에서 시간 초과가 계속 발생했다.
< 해결 방법 >
Counter의 사용법을 알게 된 후 해결을 했다. 주의할 점은 Counter 자체로는 list 처럼의 접근이 어렵고 most_common 을 사용해주어야 가능한 것 같았다. 또한 평균을 구할 때 b 를 입력 받음과 동시에 더하기 연산을 해주어 시간을 최대한 줄여 주었다. len(k)==1 인 경우를 고려하지 않아 에러가 발생했었고 이를 수정했다.
import sys
import math
from collections import Counter
# 첫째 줄에는 산술평균을 출력한다. 소수점 이하 첫째 자리에서 반올림한 값을 출력한다.
# 둘째 줄에는 중앙값을 출력한다.
# 셋째 줄에는 최빈값을 출력한다. 여러 개 있을 때에는 최빈값 중 두 번째로 작은 값을 출력한다.
# 넷째 줄에는 범위를 출력한다.
a = sys.stdin.readline()
b = [ ]
first = 0
for i in range(0,int(a)):
b.append(int(sys.stdin.readline()))
first += b[-1]
# first
print(int(round(first/len(b),0)))
# Second
b=sorted(b)
if len(b)%2==0:
print(b[int(len(b)/2-1)])
else:
print(b[int((len(b)-1)/2)])
# Third
k = Counter(b).most_common()
if len(k)==1:
print(k[0][0])
else:
if k[0][1]!=k[1][1]:
print(k[0][0])
else:
print(k[1][0])
# fourth
print(b[-1]-b[0])
728x90
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 10816 숫자 카드 2 (0) | 2022.08.03 |
|---|---|
| [파이썬] 백준 1181 단어 정렬 (0) | 2022.08.03 |
| [파이썬] 백준 18870 좌표 압축 (0) | 2022.08.02 |
| [파이썬] 백준 2004 조합 0의 개수 (0) | 2022.08.02 |
| [파이썬] 백준 2981 검문 (0) | 2022.08.02 |