At the beginning of your programming journey, all you hoped was that your programs run without any bugs. But when you grow as a developer, you would start thinking about other aspects of your program. Core aspects such as code readability, memory usage, and performance are equally important to experienced programmers as they build up their application.

If you want to start building better applications, you need to start learning advanced concepts. One such concept is known as Dynamic Programming. Although I referred to dynamic programming as an advanced concept, it is quite easy to understand and with enough practice, you can easily become an expert in it. Dynamic programming is an approach to solving algorithmic problems, in order to receive a solution that is more efficient than a naïve solution.

You can read more about dynamic programming in my article over here.

There are two major approaches to solving a problem with dynamic programming.

  • Top-down approach with Memoization
  • Bottom-up approach with Tabulation


Dynamic Programming: Memoization vs Tabulation
1.55 GEEK