I'd call myself a decent programmer with 10+ years of exp in gamedev field and never really had problems with cracking real world programming problems or delivering code/product on time. But since college always had serious problems with coding Olympiads/Contests which I personally find very math/logics heavy and focused on knowing some obscure tricks.
But now I started running into companies that use Codility (https://codility.com/programmers/lessons/8) for their interview process. And as soon as I get a problem above "easy" level I fail miserably. I always understand the requirements of the problems, time/space complexity, the main catch of the problem, etc. etc. In other words the problem is always clear on the grand scale, but when I add all the details together including for example time complexity I'm always like "Ok I have no idea how to do this with only one loop, two loops would be super easy..."
So my question would be, does anyone know a shortcut to becoming better at such problems? Maybe the rule is avoid every job that doesn't feel like a coding contest/olympiad everyday as you're regressing as programmer then? (Any literature/book recommendations are very welcome as well if it's not "Algorithms", "Data structures", etc ; )