Tell me about a time you solved a dynamic programming problem, and walk me through your approach. For the coding portion, implement max_compatible_value(jobs), which returns the maximum total value of non-overlapping jobs. Each job is [start, end, value], and a job ending at time t may be followed by one starting at t; return an integer. For example, [[1,3,5],[2,5,6],[4,6,5]] returns 10, and [] returns 0; assume 0 <= len(jobs) <= 10^4, start < end, and nonnegative values.
def max_compatible_value(jobs):