types of problem solving in cognitive psychology