본문 바로가기
백준

25945번 - 컨테이너 재배치 [백준 - Python]

by 청원뿔세포 2023. 10. 15.

https://www.acmicpc.net/problem/25945

 

25945번: 컨테이너 재배치

항구의 컨테이너 하치장 바닥에는 컨테이너를 쌓을 수 있는 칸이 일렬로 총 $n$개가 그려져 있고, 현재 하치장에는 총 $m$개의 컨테이너가 쌓여 있다. 개별 컨테이너의 높이는 모두 $1$로 동일하며

www.acmicpc.net

컨테이너 평균갯수에 중점을 두었다. 하지만 소수점이 생기기 때문에 소수점을 버림했을 경우로 생각하였다.

컨테이너가 모자라서 반드시 추가해야하는 경우는 (평균)미만일 경우이다.

컨테이너가 너무 많아서 반드시 다른곳으로 옮겨야하 하는 경우는 (평균+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))

참고 : https://yabitemporary.tistory.com/entry/BOJ-25945-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%9E%AC%EB%B0%B0%EC%B9%98-Python3

 

BOJ 25945 - 컨테이너 재배치 (Python3)

상당히 최근에 올라온 문제다. 아마 1주일도 안 되었을 것이다. 그래도 이 문제를 푸는 데 필요한 직관이 생각보다는 중요할 것 같아서 글을 쓰게 되었다. 나만 이렇게 생각했나 했는데 다들 이

yabitemporary.tistory.com

 

댓글