Topcoder is a place where you can learn the difference between O(n^2) and O(n^3) in practice.
Using my Topcoder artificial problem solving experience implementing a real FTTH network optimization platform.
Football and mountains
Learn from others. Check how they have solved problems you have problems with.
I started more than 10 years ago with Algorithms. After a moment I switched to Marathons. From that time I have managed to participate in 4 onsite events, winning the first Topcoder Open Marathon Track in 2007.