-
Notifications
You must be signed in to change notification settings - Fork 1
/
Hackerrank_3.11.js
61 lines (51 loc) · 1.27 KB
/
Hackerrank_3.11.js
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
/*
* Complete the 'minTime' function below.
*
* The function is expected to return a LONG_INTEGER.
* The function accepts INTEGER_ARRAY boxes as parameter.
*
* if boxes=[1,2,3]
* have 1 box on 1st floor, 2 on 2nd, etc.
* want to pick up more boxes on the way of from lower floors as needed
*
* Time cost:
* Riding the elevator:
* n floors
* looking at floor i
* trip will take n-i minutes total
* Loading and unloading 1 box: 1 min.
*
* [1,2,3]
*
*
*/
function floorHasBox(boxes) {
let empty = true
boxes.forEach(floor => {
if (floor !== 0) {
empty = false;
}
})
return !empty;
}
function minTime(boxes) {
// Write your code here
let totalFloors = boxes.length;
let minTime = 0;
while (floorHasBox(boxes)) {
let initTrip = false;
boxes.forEach((boxCount, floorLevel) => {
if ((boxCount > 0)) {
boxes[floorLevel]--
minTime++
//cost to pick up box
let elevTrip = totalFloors - floorLevel;
if (initTrip === false) {
minTime += elevTrip;
}
initTrip = true;
}
});
}
return minTime;
}