PS나 현업에서 특정한 문제를 해결할 때, 주어진 시간 제한을 엄격히 지키는 것이 중요하다. 학부 알고리즘 수업에서 다양한 시간 복잡도 관련 이론과 분석 방법에 대해 배웠지만, 사실 이를 실제 문제에 정확하게 적용하기란 쉽지 않다. 이때, (특히나 PS 문제 해결에서) 결코 정확하지는 않지만, 어느 정도 대략적인 기준점을 제시할 수 있는 매커니즘이 '알고리즘 문제 해결 전략 세트'에서 소개되고 있다. 그 내용은 다음과 같다.
입력의 크기 N을 알고리즘의 시간 복잡도(빅오)에 대입해서 얻은 값(반복문의 수행 횟수)이 1억(10^8), 즉, 0이 8개가 넘어가면 1초라는 시간 제한을 초과할 가능성이 농후하다.
즉, 예를 들어 O(NlogN)인 알고리즘이 있고, 입력의 크기가 최대 10000, 시간제한이 1초라고 하면,
10000 x log_2(10000)은 명백히 1억보다는 (훨씬) 작은 값일 것이다. 이 경우엔 제한 시간을 초과하지 않을 것임을 확신하고 코딩을 시작하면 된다.
반대로, O(N^2)인 알고리즘을 같은 상황에 사용하는 경우 계산 값은 100,000,000로, 1억이다. 이 경우에는 '애매하다'라고 판단하면 된다. 만약, 사용한 알고리즘의 (가장 작은, 반복문에서 가장 최소에 해당하는) 내부 코드 블록이 복잡한 명령어나 과정을 거친다면 초과할 가능성이 높고, 간단하게 구성되어 있는 경우엔 시간 제한 내에 해결할 수 있을 가능성이 높다고 보면 편하다.
한편, O(N^3)인 알고리즘을 적용하면, 계산할 필요도 없이 초과할 것임을 알 수 있다. 즉, 이 경우엔 이 알고리즘을 적용하면 안되는 것이다.
'알고리즘 문제 해결 전략 세트' 교재에 보다 더 자세한 설명이 있으니 관심있는 사람은 책을 구매해 학습을 진행하면 되겠다.