상세 컨텐츠

본문 제목

[SWEA] 5201. 컨테이너 운반

💯ProblemSolving/문제 풀이-Java

by :부셔져버린개발자 2024. 10. 30. 15:14

본문

       문제 요약        

- 문제

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);
		}
	}

}

 

 

728x90

관련글 더보기