# Programming Problems To Solve

If you’re aiming for a top-tier tech job, you have to face the coding interview—and come out on top.And one sure-fire way to impress is to have dynamic programming down pat. While the resources mentioned in this post are free, I may get a small commission if you click the links below and later buy one of his products. difficult because the concept is on the simpler side.There are several keys to think about while doing this step that you’ll want to keep in mind: This is the step where we decide whether we can actually use dynamic programming to solve a problem.

If you’re aiming for a top-tier tech job, you have to face the coding interview—and come out on top.And one sure-fire way to impress is to have dynamic programming down pat. While the resources mentioned in this post are free, I may get a small commission if you click the links below and later buy one of his products. difficult because the concept is on the simpler side.There are several keys to think about while doing this step that you’ll want to keep in mind: This is the step where we decide whether we can actually use dynamic programming to solve a problem.

Dynamic programming actually requires us to meet 2 specific criteria.

If we don’t, then it is not possible for us to optimize our problem using dynamic programming.

To start, let’s look at how most people prepare for their coding interviews: They focus on memorizing solutions.

Rather than being strategic and understanding the underlying techniques, most people focus on simply memorizing as many solutions as they can. But the problem is that it ultimately handicaps you.

So what if we could do the same thing with dynamic programming?

Well, it’s never going to happen if we just try to memorize solutions to different problems.Not to mention that this approach prevents you from actually being able to connect the dots.Imagine learning a new language (let’s say French). Here’s one sample set of words: “suis”, “es”, “est”, “sommes”, “êtez”, “sont” What is the connection between these words (if you already know French, pretend you don’t for a sec)? So if you were just memorizing, you would be memorizing 6 discrete words.The issue is that the similarity between these different problems in the solution itself.The similarity between all dynamic programming problems is in the process.This means that if you’re interviewing for any top tech company, dynamic programming should be at the top of your list of topics to prepare. The real challenge with dynamic programming is that it is counterintuitive.When you’re trying to solve dynamic programming problems, all the obvious steps that you would normally take actually pull you further away from the correct solution: So if dynamic programming is so counterintuitive, how are we ever supposed to solve these problems effectively?If our solution is already efficient, spending a lot of time optimizing is a real waste of time.With most of our recursive functions, we can use a pretty simple heuristic to compute the runtime.But this approach quickly leads to diminishing returns.There’s only so much that you can actually memorize, and the number of problems that you could be asked is very large.