Algorithm/SWEA
[Python3] SWEA 컨테이너 운반 5201
앵도라지
2023. 1. 27. 13:49
문제 :
화물이 실려 있는 N개의 컨테이너를 M대의 트럭으로 A도시에서 B도시로 운반하려고 한다.
트럭당 한 개의 컨테이너를 운반 할 수 있고, 트럭의 적재용량을 초과하는 컨테이너는 운반할 수 없다.
컨테이너마다 실린 화물의 무게와 트럭마다의 적재용량이 주어지고, A도시에서 B도시로 최대 M대의 트럭이 편도로 한번 만 운행한다고 한다.
이때 이동한 화물의 총 중량이 최대가 되도록 컨테이너를 옮겼다면, 옮겨진 화물의 전체 무게가 얼마인지 출력하는 프로그램을 만드시오.
화물을 싣지 못한 트럭이 있을 수도 있고, 남는 화물이 있을 수도 있다. 컨테이너를 한 개도 옮길 수 없는 경우 0을 출력한다.
접근 :
그리디 문제이므로, 정렬을 활용해 문제를 풀 수 있다는 접근은 쉽다.
가장 적재용량이 높은 트럭이 가장 무거운 짐을 운반할 수 없다면, 그 컨테이너는 주어진 어떤 트럭도 운반할 수 없다.
그렇기 때문에 pop을 통해 그 컨테이너를 버리면 된다.
짐 운반이 되면 운반된 트럭을 누적합으로 더하고, pop으로 버린다.
트럭 배열이 한 바퀴 다 돌면 문제가 끝난다.
풀이 :
T = int(input())
for tc in range(1, T+1):
N, M = map(int, input().split())
container = sorted(list(map(int, input().split())), reverse=True)
truck = sorted(list(map(int, input().split())), reverse=True)
ans = 0
for i in range(len(truck)):
while container :
if truck[i] >= container[0] :
ans += container[0]
container.pop(0)
break
else:
container.pop(0)
print(f'#{tc} {ans}')