이 문제는 문제에 풀이 과정이 다 나와있어서 문제에 나와 있는 대로 코딩을 했다.
산술평균
중앙값
정렬 해서 가운데 값을 찾았고
최빈값
요소 개수를 count 해주는 counter 모듈을 이용했다.
최대 최소 차이
from collections import Counter
n = int(input())
arr = sorted([int(input()) for _ in range(n)])
print(int(round(sum(arr)/len(arr),0))) #산술평균
print(arr[len(arr) // 2]) #중앙값
# 최빈값
cnt = Counter(arr).most_common()
if len(cnt) > 1:
print(arr[1])
else:
print(Counter(arr).most_common(1)[0][0])
#범위 최대 최소 차이
print(arr[len(arr)-1] - arr[0])
처음에 이렇게 풀었는데 오답이 나왔다.
최빈값 구하는 곳에서 문제를 다시 읽어보니 최빈값이 여러개 일 땐 최빈 값 중에 2번째 요소를 구해줘야 했지만 나는 그냥 배열의 2번째 값으로 출력했다.
from collections import Counter
import sys
n = int(input())
arr = sorted([int(sys.stdin.readline()) for _ in range(n)])
print(round(sum(arr)/len(arr))) #산술평균
print(arr[len(arr) // 2]) #중앙값
# 최빈값
cnt = Counter(arr).most_common(2)
if len(cnt) > 1:
if cnt[0][1] == cnt[1][1]:
print(cnt[1][0])
else:
print(cnt[0][0])
else:
print(cnt[0][0])
#범위 최대 최소 차이
print(max(arr) - min(arr))
다시 풀었을때 시간초과가 떠서 sys로 인풋 받고
pypy3으로 제출 했다
문제에 풀이가 다 나와있어서 쉽게 풀리겠거니 했는데,
최빈값 구하는 부분에서 살짝 애를 먹었다.