Focus on what would happen in the first step what to choose from (values), Find the recursive function Find the cases (and base case) Determine which value is kept in target case
Then, memoize all the repeated subproblems by incrementing in a loop
Push vs Pull
Push DP - updating future states based on past states
typically has like a i + 1
Pull dp
starting thought from goal state
evaluating immediate recursive cases
typically has a i - 1
Both have base cases