forked from susilnem/Leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEliminate_Maximum_Number_of_Monsters.py
32 lines (24 loc) · 1.38 KB
/
Eliminate_Maximum_Number_of_Monsters.py
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
"""
You are playing a video game where you are defending your city from a group of n monsters.
You are given a 0-indexed integer array dist of size n,
where dist[i] is the initial distance in kilometers of the ith monster from the city.
The monsters walk toward the city at a constant speed.
The speed of each monster is given to you in an integer array speed of size n,
where speed[i] is the speed of the ith monster in kilometers per minute.
You have a weapon that, once fully charged, can eliminate a single monster.
However, the weapon takes one minute to charge.
The weapon is fully charged at the very start.
You lose when any monster reaches your city.
If a monster reaches the city at the exact moment the weapon is fully charged,
it counts as a loss, and the game ends before you can use your weapon.
Return the maximum number of monsters that you can eliminate before you lose,
or n if you can eliminate all the monsters before they reach the city.
"""
class Solution:
def eliminateMaximum(self, dist: List[int], speed: List[int]) -> int:
n = len(dist)
dist_copy = [dist[i]/speed[i] for i in range(n)] #here we calculate the time taken by each monster and put it in the list using list comprehension
dist_copy.sort() #here we sorted the time using sort() function
for i in range(n):
if dist_copy[i] <= i:return i
return n