Skip to main content


This section contains a list of algorithmic problems and their solutions.

After each problem, there is a Simplification section where I state other easy problems which should help the reader solve the main problem.

I think you shouldn't jump from a problem to a solution that is hard to get. I believe every solution composes of smaller solutions or patterns which you should get used to by practice. Having algorithm skills is all about internalizing those small patterns of solving problems.

My unverified assumption is that if you would practice every day the easy problems, you would be able to solve the harder ones. Instead of practicing hard problems each day, maybe it's helpful to practice solving easier problems and only now and then verify yourself on the harder ones.