-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReto #16.js
More file actions
64 lines (50 loc) · 1.73 KB
/
Reto #16.js
File metadata and controls
64 lines (50 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/**
* Reto #16: 🎁 Empaquetando regalos para Santa
*
* Santa quiere repartir regalos de la forma más eficiente posible 🎁. Tiene una lista de regalos, cada uno con un peso, y un trineo que solo puede cargar hasta un peso máximo.
Los regalos se entregan en orden, y Santa no puede cambiar ese orden. Cuando un regalo no cabe en el trineo actual, Santa envía el trineo y prepara uno nuevo.
Tu tarea esescribir una función que calcule el número mínimo de trineos necesarios para entregar todos los regalos.
Eso sí, ten en cuenta que a veces hay un regalo que no cabe en el trineo, entonces hay que devolver null porque ese trineo no sirve para ese pack de regalos.
*/
console.log(packGifts([2, 3, 4, 1], 5));
// 2 trineos
// Trineo 1: 2 + 3 = 5
// Trineo 2: 4 + 1 = 5
console.log(packGifts([3, 3, 2, 1], 3));
// 3 trineos
// Trineo 1: 3
// Trineo 2: 3
// Trineo 3: 2 + 1 = 3
console.log(packGifts([1, 1, 1, 1], 2));
// 2 trineos
// Trineo 1: 1 + 1 = 2
// Trino 2: 1 + 1 = 2
console.log(packGifts([5, 6, 1], 5));
// null
// Hay un regalo de peso 6 que no cabe
console.log(packGifts([], 10));
// 0 trineos
// No hay regalos que entregar
/**
* @param {number[]} gifts - The gifts to pack
* @param {number} maxWeight - The maximum weight of the sleigh
* @returns {number | null} The number of sleighs needed
* Return null if no sleigh can carry all the gifts
*/
function packGifts(gifts, maxWeight) {
if(gifts.length===0)
return 0;
let currentWeight = 0;
let sleighs = 1;
for(const gift of gifts){
if(gift > maxWeight)
return null;
if(gift > maxWeight-currentWeight){
sleighs++;
currentWeight = gift;
}
else
currentWeight += gift;
}
return sleighs;
}