KEEP GOING
[python] SWEA : 컨테이너 운반 본문
반응형
https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do
화물이 실려 있는 N개의 컨테이너를 M대의 트럭으로 A도시에서 B도시로 운반하려고 한다.
트럭당 한 개의 컨테이너를 운반 할 수 있고, 트럭의 적재용량을 초과하는 컨테이너는 운반할 수 없다.
컨테이너마다 실린 화물의 무게와 트럭마다의 적재용량이 주어지고, A도시에서 B도시로 최대 M대의 트럭이 편도로 한번 만 운행한다고 한다.
이때 이동한 화물의 총 중량이 최대가 되도록 컨테이너를 옮겼다면, 옮겨진 화물의 전체 무게가 얼마인지 출력하는 프로그램을 만드시오.
화물을 싣지 못한 트럭이 있을 수도 있고, 남는 화물이 있을 수도 있다. 컨테이너를 한 개도 옮길 수 없는 경우 0을 출력한다.
[입력]
첫 줄에 테스트케이스의 수 T가 주어진다. 1<=T<=50
다음 줄부터 테스트 케이스의 별로 첫 줄에 컨테이너 수 N과 트럭 수 M이 주어지고, 다음 줄에 N개의 화물이 무게wi, 그 다음 줄에 M개 트럭의 적재용량 ti가 주어진다.
1<=N, M<=100, 1<=wi, ti<=50
[출력]
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.
1. 코드 구현
for tc in range(1, int(input())+1):
result = 0
# 컨테이너수, 트럭수
n, m = map(int, input().split())
# n개의 화물의 무게
weight = list(map(int, input().split()))
# m개 트럭의 적재용량
truck = list(map(int, input().split()))
truck.sort(key=lambda x:x, reverse=True)
weight.sort(key=lambda x:x, reverse=True)
for i in range(n):
# 더이상 컨테이너를 담을 트럭이 없는 경우
if i > m-1:
break
for j in range(m):
# 트럭이 비어있다면
if not truck:
break
if truck[0] >= weight[i]:
result += weight[i]
truck.pop(0)
break
print(f'#{tc} {result}')
반응형
'code review > greedy' 카테고리의 다른 글
[python] 프로그래머스 42862번 : 체육복 (0) | 2022.04.01 |
---|---|
[python] 백준 2437번 : 저울 (0) | 2022.03.02 |
[python] SWEA 5203 : 베이비진 게임 (0) | 2022.02.11 |
[python] 백준 10610 : 30 (0) | 2022.02.10 |
[python] SWEA 5202 : 화물 도크 (0) | 2022.02.08 |
Comments