Explore Possible Strategies
Come up with 3+ strategies for getting from your sample inputs to your sample outputs. At this point don't think about how you'll implement your strategies, don't even worry about writing them in pseudocode if it doesn't come naturally. Working with diagrams and sketches are most productive at this stage.
It's important at this point that you don't get get too attached to any particular strategy, and that you don't think about who recommended what. You will come up with the best solutions if you spend this time freely exploring the solution space and avoiding all judgment. Committing to one path too soon, or being overly critical, will limit your ability to come up with novel solutions.
Tips & Tricks:
- Play around with specific test-cases
- Imagine realistic use-cases
- Find ways to build your solution from smaller, repetitive, processes
- Study other people's completed solutions:
- Study their code in PythonTutor
- Analyze their strategy
- Diagram their strategy
- Analyze their use of language features
- Complete an "other-people-solutions" template markdown
Resources
- JavaScript Execution Context
- Advanced JS Visualization
- Series of 5 videos about JS execution
- List of Strategies
- Break it Down
- Problem Solving