Yes, I understand, it could give a hint to the solution of the problems (for example people could start using explicit tags like: "min-heap", "sort", "process-from-backwards", etc). On the other hand, I find tagging very useful if you want to increase your skill in a certain technique and solve only one kind of problems. For example: solve only dynamic-programming problems or solve only graph problems.
How about these restrictions:
- only the users who have solved the problem can tag it
- there are a predefined set of tags that are very general (i.e.: "graph-theory", "dynamic-programming", etc); the users can only use these static tags
/////
Another interesting thing that can be done with tags: you could display on a user's profile page his expertise or skill. The logic could be this: you know what problems a user solved and you know the tag cloud for each problem (i.e.: "dynamic-programming (35)", "greedy (2)", ...). Sum this for all the solved problems and you could display something like this on the profile page:
Skill
"dynamic-programming" ###################################
"graph-theory" ####################
"math" ######
"game-theory" ############
...
/////
Sorry if I got carried away with suggestions, got really excited to see the new site re-design I guess 