Minimum Skips to Arrive at Meeting On Time LeetCode solution in Python
1class Solution:2def minSkips(self, dist: List[int], speed: int, hoursBefore: int) -> int:3if sum(dist) / speed > hoursBefore:4return -1 # impossible56@cache7def fn(i, k):8"""Return min time (in distance) of traveling first i roads with k skips."""9if k < 0:10return inf # impossible11if i == 0:12return 013return min(14ceil((fn(i - 1, k) + dist[i - 1]) / speed) * speed,15dist[i - 1] + fn(i - 1, k - 1),16)1718for k in range(len(dist)):19if fn(len(dist) - 1, k) + dist[-1] <= hoursBefore * speed:20return k