N개의 화물을 M개의 트럭을 이용해 한 번에 하나씩 옮기려고 한다
M개의 트럭에는 각각 적재할 수 있는 화물 최대 중량이 정해져있다
옮길 수 있는 화물들의 최대 무게
-> 화물, 트럭을 내림차순 정렬을 한다
트럭에 담을 수 있는 화물인지 확인하고 담았다면, 다음 트럭을 낸다
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Solution {
static int T;
static int N, M;// N개의 컨테이너를 M개의 트럭을 통해 이동
static int[] container;
static int[] maxWeight;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
T = Integer.parseInt(br.readLine());
for (int test = 1; test <= T; test++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
container = new int[N];
for (int i = 0; i < N; i++) {
container[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
maxWeight = new int[M];
for (int i = 0; i < M; i++) {
maxWeight[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(container);
Arrays.sort(maxWeight);
int moveWeight = 0;
int ci = container.length - 1;
for (int w = maxWeight.length - 1; w >= 0; w--) {
int mWeight = maxWeight[w];
while (true) {
if (container[ci] <= mWeight) {
moveWeight += container[ci];
ci -= 1;
break;
}
ci -= 1;
if (ci < 0)
break;
}
if (ci < 0)
break;
}
System.out.println("#" + test + " " + moveWeight);
}
}
}
[SWEA] 4615. 재미있는 오셀로 게임 (0) | 2024.10.31 |
---|---|
[SWEA] 5202. 화물도크 (0) | 2024.10.30 |
[SWEA] 1859. 백만 장자 프로젝트 (0) | 2024.10.29 |
[프로그래머스] 이중우선순위큐 (0) | 2024.10.25 |
[프로그래머스] N개의 최소공배수 (0) | 2024.10.25 |