I love algorithms, data structures and time complexity, they are the basis for being able to solve complex problems. However, in my experience in software engineering, the dominant challenge is writing bug free code rather than solving complex problems. I once took a codility challenge which had a complex problem description with many edge cases but the time complexity was not graded. The difficulty in solving the problem was fully understanding the long problem statement and carefully implementing the algorithm to cover all cases. Essentially, it was more of a correctness test rather than a code performance test.<p>Does anybody have any recommendations for problems which have a difficult correctness component but easy performance component?