티스토리 뷰


시간 초과 때문에 input() 대신 sys.stdin.readline()을 사용해 입력받는다.

만약 입력받은 숫자가 1개면 범위만 0으로 출력하고 나머지는 입력받은 그대로 출력한다.

평균을 출력할 때는 int형으로 변환하는 것이 아닌 round()를 사용해 반올림해서 출력한다.

중앙값은 정렬된 리스트에서 [길이 // 2]에 위치한 값을 출력한다.

최빈값은 collections.counter를 사용해 산출했다. 최빈값이 여러 개 있으면 두 번째 값을 출력한다.

범위는 max()와 min()을 사용해 가장 큰 값에서 가장 작은 값을 뺀다.

문제풀이

from collections import Counter
import sys; s = sys.stdin.readline

lst = list()

for i in range(int(s())):
    lst.append(int(s())) # 입력 받은 데이터들을 리스트에 저장
if len(lst) == 1:
    print("{lst}\n{lst}\n{lst}\n0".format(lst=max(lst)))
else:
    lst = sorted(lst) # 리스트 정렬
    print(round(sum(lst)/len(lst))) # 평균 출력
    print(lst[len(lst)//2]) # 중앙값 출력
    count = Counter(lst)
    count = sorted(count.items(),key = lambda x : x[1],reverse = True)
    if count[0][1] == count[1][1]: # 최빈값 출력
        print(count[1][0])
    else:
        print(count[0][0])
    print(max(lst)-min(lst)) # 범위 출력


'문제 풀이 > Baekjoon Online Judge' 카테고리의 다른 글

[python3] 1475번 방 번호  (0) 2019.04.18
[python3] 5622번 다이얼  (0) 2019.04.17
[python3] 2908번 상수  (0) 2019.04.10
[python3] 1316번 그룹 단어 체커  (0) 2019.04.09
[python3] 10989번 수 정렬하기 3  (0) 2019.04.08
댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Total
Today
Yesterday