# Steps to answer

- Listen carefully.
- Pay very close attention to any information.

- Draw an example.
- Specific. Sufficiently large. Not a special case.

- State a brute force
- The initial solution may be terrible. Explain the space/time complexity.

- Optimize
- Look for any unused information
- Use a fresh example
- Solve it incorrectly.
- Make time vs. space tradeoff
- Precompute
- Use a hash table
- Think about the best conceivable runtime
- Walk through with Bottleneck, Unnecessary work and Duplicated work

- Implement
- Test

Techniques

- BUD
- DIY
- Simplify and generalize
- Base case and build
- Data structure brainstorm
- BCR