- knowing what part of your knowledge to apply to solve a particular problem, or alternatively finding out which knowledge you have to acquire in order to solve this problem (wikipedia, mathworld...), and then actually acquiring it and successfully applying it to solve the problem.
- Having someone do the job for you and tell you the exact algorithm that solves the problem or tell you what's wrong with your code.
Part of the challenge is to find what's wrong with your code, try different approaches etc. I can't tell you how many times I've struggled for days to find some sneaky bug in a code I've written, and I glad I did because it greatly improved my programming and debugging skills and sometimes even made me try and implement other algorithms which had the added benefit of greatly expanding my knowledge.
It is true that one can make one's life much easier by seeking final answers (and indeed there are number of sites that provide these answers), or ask for directions in various forums, but then he forfeits many of the foregoing benefits. Furthermore this "way of solving problems" distorts the ranking system in the project Euler site which is supposed to reflect the aggregate value, so to speak ,of ones logical, programming, research, learning... skills, relative to other users.