난이도 : D3
문제번호 : 5021
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
화물이 실려 있는 N개의 컨테이너를 M대의 트럭으로 A도시에서 B도시로 운반하려고 한다. 트럭당 한 개의 컨테이너를 운반 할 수 있고, 트럭의 적재용량을 초과하는 컨테이너는 운반할 수 없다. 컨테이너마다 실린 화물의 무게와 트럭마다의 적재용량이 주어지고, A도시에서 B도시로 최대 M대의 트럭이 편도로 한번 만 운행한다고 한다. 이때 이동한 화물의 총 중량이 최대가 되도록 컨테이너를 옮겼다면, 옮겨진 화물의 전체 무게가 얼마인지 출력하는 프로그램을 만드시오. 화물을 싣지 못한 트럭이 있을 수도 있고, 남는 화물이 있을 수도 있다. 컨테이너를 한 개도 옮길 수 없는 경우 0을 출력한다. |
입력
첫 줄에 테스트케이스의 수 T가 주어진다. 1<=T<=50 |
출력
각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다. |
예시
입력 | 출력 |
3 3 2 1 5 3 8 3 5 10 2 12 13 11 18 17 4 7 20 3 9 7 9 20 5 10 12 10 13 14 6 19 11 5 20 11 14 5 18 17 8 9 17 18 4 1 16 15 13 |
#1 8 #2 45 #3 84 |
2. 문제풀이
트럭당 여러개의 컨테이너를 옮길 수 있다면 어려워 졌을 문제였지만 |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#5021 D3 컨테이너 운반
for t in range(int(input())):
answer = 0
N, M = map(int, input().split())
N_list = sorted(list(map(int, input().split())))
M_list = sorted(list(map(int, input().split())))
#트럭과 컨테이너가 남아있을때까지 반복
while M_list and N_list:
truck = M_list.pop()
#컨테이너가 남아있을때까지 반복
while N_list:
container = N_list.pop()
#트럭이 화물을 실을 수 있다면
if truck >= container:
#정답에 무게 추가
answer += container
break
print('#{} {}'.format(t+1, answer))
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
베이비진 게임 Python(SW Expert Academy, SWEA) (0) | 2020.05.22 |
---|---|
화물 도크 Python(SW Expert Academy, SWEA) (0) | 2020.05.21 |
암호 Python(SW Expert Academy, SWEA) (0) | 2020.05.19 |
수열 합치기 Python(SW Expert Academy) (0) | 2020.05.18 |
단순 2진 암호코드(SW Expert Academy) (0) | 2020.05.17 |
댓글