Whenever you come across a problem there are a few things that are important to consider.
Firstly make sure you have a clear understanding of the problem and problem space. It is useful to make sure you understand the vocabulary. For example you may have to deal with words that have very different meanings in the context of the problem.
Secondly when attacking a problem it is useful to break it up to smaller pieces.