💡문제접근
- 맨 첫 번째 수와 맨 마지막 수는 중위값으로 나올 수 없는 숫자이다.
- 따라서 for문의 범위를 설정할 때
for i in range(1, N-1)
로 설정해야한다.
- 맨 첫 번째 수와 맨 마지막 수가 들어가므로 중간에 들어올 수 있는 수는
li[i]
로 이 숫자가 중위값이 된다.
- 평균값은
(li[i] + li[j] + li[k]) / 3
인데 중위값과 평균값의 차이를 3배한 결과를 출력하는 것이므로 절댓값 처리를 해주어 li[i] + li[j] + li[k] - 3 *- med
가 된다. 이 때, med는 중위값이다.
💡코드(메모리 : 35440KB, 시간 : 168ms)
import sys
input = sys.stdin.readline
N = int(input())
li = []
for _ in range(N):
li.append(int(input()))
li.sort()
Max = -1
for i in range(1, N-1):
average_Min = (li[0] + li[i] + li[i+1])
average_Max = (li[i-1] + li[i] + li[N-1])
if abs(average_Min - li[i] * 3) > Max:
Max = abs(average_Min - li[i] * 3)
if abs(average_Max - li[i] * 3) > Max:
Max = abs(average_Max - li[i] * 3)
print(Max)
💡소요시간 : 1day