1. Break down question, explain desired algorithm
  2. Start with an example and go through edge cases
  3. Write psuedocode with base cases
  4. Fix bugs
  5. Talk about time and space complexity