https://www.acmicpc.net/problem/25945
컨테이너 평균갯수에 중점을 두었다. 하지만 소수점이 생기기 때문에 소수점을 버림했을 경우로 생각하였다.
컨테이너가 모자라서 반드시 추가해야하는 경우는 (평균)미만일 경우이다.
컨테이너가 너무 많아서 반드시 다른곳으로 옮겨야하 하는 경우는 (평균+1) 초과일 경우이다.
모자라거나 많은 경우를 구하여 각각 변수에 저장한다. 이 값들중 더 큰값을 추출하면 답이 된다.
모자라는 경우 문제에서 (평균+1)인 경우를 허용하기 때문에 (평균+1) 에서 하나 가져와도 문제가 되지 않는다.
너무 많은 경우도 마찬가지로 (평균)값을 가지는 작은 곳에 컨테이너 하나를 줘서 (평균+1)이 되게 한다.
from sys import stdin
n = int(stdin.readline())
arr = [0]*n
s = stdin.readline().rstrip().split()
for i in range(n):
arr[i] = int(s[i])
avg = sum(arr)//n
need = 0
lose = 0
# 최소 avg
# 최대 avg+1
for i in range(n):
if arr[i] <avg:
need += avg-arr[i]
elif arr[i] > avg+1:
lose += arr[i]-avg-1
print(max(need, lose))
'백준' 카테고리의 다른 글
25943: 양팔저울 [백준 - Python] (0) | 2023.10.03 |
---|---|
26111: Parentheses Tree [백준 - Python] (0) | 2023.10.03 |
11070 : 피타고라스 기댓값 [백준 - Python] (0) | 2023.09.28 |
1676번: 팩토리얼 0의 개수 [백준 - Python] (1) | 2023.09.18 |
1920번: 수 찾기 [백준 - Python] (0) | 2023.09.15 |
댓글