Often times when using Dynamic programming we can reduce the amount of time an algorithm solves a problem.
A common example of this is reducing the time complexity from expoential to a polynomial runtime*(ex:exponential
to linear runtime)*. This technique breaks down the problem into simplier sub-prpblems, and programming this can
often mean using helper methods to solve a part of a question if that part of the question shows up multiple times
in a problem. For example, keeping a seperate method for sorting an array in a complex array programming question
could be considered dynamic programming.