When designing an algorithm, ask yourself : For which cases does the obvious method work? Then find a new way to tackle the remaining cases! 예제) Find a hamiltonian path through a tournament graph. Using a more-of-input approach, we claim to have a solution while pretending that the nodes we have processed so far is the entire input instance. We want to maintain the Loop Invariant by adding a new..
How to Think about Algorithms by Edmonds has good in-depth explanation of how to actually go about thinking about designing algorithms and approaching algorithmic problems. I applied the process to understanding Merge() routine of the MergeSort algorithm.