Daniel Zingaro wrote Learn to Code By Solving Problems. The book utilizes the Python Programming Language to solve snippets of problems from coding competitions. The book is great for the beginner. It describes the logic Zingaro uses to solve the problem and covers the tool he will use during that chapter.
Along the way, Zingaro introduces lists, dictionaries, loops using for, loops using while, and more. Zingaro covers algorithmic efficiency in the final chapters of the book. The problems listed have time limits for how long they run, so you could use one method to solve it, but it would exceed the requisite time.
I enjoyed the book. Thanks for reading my review, and see you next time.