1710. Maximum Units on a Truck
💡 に答える
/**
* @param {number[][]} boxTypes
* @param {number} truckSize
* @return {number}
*/
var maximumUnits = function (boxTypes, truckSize) {
let result = 0;
let sum = 0;
boxTypes.sort((a, b) => b[1] - a[1]);
for (let [x, y] of boxTypes) {
sum += x;
result += x * y;
if (sum > truckSize) {
let remain = sum - truckSize;
result -= remain * y;
break;
}
}
return result;
};
// 다른 사람의 풀이
var maximumUnits = function (boxTypes, truckSize) {
boxTypes.sort((a, b) => b[1] - a[1]); // 박스의 per units를 기준으로 큰 순서대로 정렬
let ans = 0;
for (let [x, y] of boxTypes) { // 2차원 배열은 이런 방식으로 구조분해 할당을 적용하면 더 깔끔해진다.
if (!truckSize) break; // truckSize가 없을 경우 반복문 탈출
let count = Math.min(x, truckSize); // loop을 돌 때마다 truckSize에서 count를 빼주기 때문에 마지막 loop에는 x가 아닌 truckSize가 count에 담기게 된다.
ans += count * y;
truckSize -= count;
}
return ans;
};
let boxTypes = [
[5, 10],
[2, 5],
[4, 7],
[3, 9],
];
let truckSize = 10;
maximumUnits(boxTypes, truckSize);
📝 整理する
Greedyは基本タイプの問題です.上は私が初めて解く方法で、下は他の人の私を解く少し変形する方法です.説明は上のコメントと下図で置き換えます.
修正、指摘を歓迎します!
質問リンク
https://leetcode.com/problems/maximum-units-on-a-truck/
LeetCode GitHub
https://github.com/tTab1204/LeetCode
Reference
この問題について(1710. Maximum Units on a Truck), 我々は、より多くの情報をここで見つけました https://velog.io/@ken1204/1710.-Maximum-Units-on-a-Truckテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol