난이도 : D3
문제번호 : 5021
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
목차
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 |
댓글