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

+ Recent posts