Egg Dropping Problem: Dynamic Programming Fundamentals & Understanding Subproblem Decomposition