트럭의 사이즈(박스 적재량 = truckSize)인 트럭이 있고
boxTypes 라는 2차원 배열이 주어진다고 한다
이 때 2차원 배열의 자식 배열의 0번째 원소값은 그 타입의 박스의 갯수, 1번째 원소값은 그 타입 박스의 유닛사이즈라고 한다
예를 들어 boxTypes = [[1,2],[2,2], [3,1]] 이라면
0번째 박스 타입의 갯수는 1, 유닛사이즈는 2
1번째 박스 타입의 갯수는 2, 유닛사이즈는 2
2번째 박스 타입의 갯수는 3, 유닛사이즈는 1 인셈이다
이러한 조건에서 트럭에 실을 수 있는 박스 유닛사이즈의 최댓값을 리턴하는 문제이다
Example을 보면
트럭의 사이즈는 정해져 있고 박스 유닛사이즈의 값이 최대가 되게 하려면
유닛사이즈가 큰 박스부터 트럭에 실어야 한다
그래서 우선 각 원소 배열의 1번 인덱스의 값을 기준으로 내림차순 정리를 해주었다
boxTypes.sort((a,b) => b[1] - a[1]);
그러면 boxTypes 배열이 유닛사이즈 값을 기준으로 내림차순으로 정리가 되므로
앞의 박스들부터 현재 truck 사이즈에 따라 분기를 해주어 트럭에 실을 수 있는 유닛사이즈 값을 계산해주었다
const maximumUnits = function(boxTypes, truckSize) {
let result = 0;
boxTypes.sort((a,b) => b[1] - a[1]);
for(let i = 0; i < boxTypes.length; i++) {
if(boxTypes[i][0] <= truckSize) {
truckSize -=boxTypes[i][0];
result += boxTypes[i][1] * boxTypes[i][0];
}else if(boxTypes[i][0] > truckSize) {
result += truckSize * boxTypes[i][1];
truckSize -=boxTypes[i][0];
}
if(truckSize <= 0) return result;
}
return result;
};
submit을 해보니
정답이었다!