How to get better at solving programming problems

I am currently enroll in CodeAcademy Python Track and use Hackerrank to practice programming problems. For easy problems I have little trouble solving it but for the harder ones I have no idea how to approach and solve it. Are there any books or courses to help me get better at solving programming problems ?

Can’t immediately suggest any books but there is a lot online for free. SERP: Python The Hard Way.

Something to have on hand at all times is a pad of paper and a pencil. Study the problem on paper and piece together the steps it would take to solve it. Once you can isolate the steps and put them in order, or make them repeatable you have the sketch you need to start filling in the code to carry out the steps.