Dynamic programming (DP) addresses issues in divide and conquer by allowing inter-dependent sub-problems and avoiding re-computation through stored results. It prioritizes efficiency by computing smaller instances first and using previously computed solutions to inform subsequent calculations. Examples include solving the Fibonacci sequence and string edit problems, where DP significantly reduces time complexity compared to traditional recursive approaches.