1710. Maximum Units on a Truck

๋Š˜๋ณดยท2021๋…„ 10์›” 3์ผ
0

LeetCode

๋ชฉ๋ก ๋ณด๊ธฐ
32/69

๐Ÿ’ก ํ’€์ด

/**
 * @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

0๊ฐœ์˜ ๋Œ“๊ธ€