Congratulations on making it this far. It's time to put everything you've learned together by completing these challenge problems.
Each problem has a standard and an advanced solution. The standard solutions only use concepts covered in the prep material here, while the advanced solutions introduce new concepts. If the advanced solutions seem over your head, don't worry! You are not required to know the material present in the advanced solutions, and these solutions are provided for applicants who already have some programming background or who want to push their studying beyond the scope of what is required.
It is highly recommended that you solve these problems first without looking at the solution. This will ensure you really have learned the concepts. That being said, if you're entirely stuck on a particular problem, looking at the solution and dissecting why you weren't able to arrive at it is okay. They're meant to be a little challenging. Once you have solved the problem yourself, then it is recommended that you do look at the solution to gain any insight on another way to solve the problem. There are many different ways to solve a problem, it's okay if you've done it differently than our solutions, although our solutions aim to follow "best practices".