コーディングテストにおけるコードのTIMEOUT ERRORについて
オンラインでコーディングテスト練習ができるCodilityのMaxProductOfThreeという問題のコードですが、テストケースが全て正解でもDetected time complexityがO(N**3)
だったので、テストスコアが44%/100%と表示されました。
(参考)MaxProductOfThreeについて日本語で書かれた記事
参考記事で書かれているO(N)
のコードはわかりにくいと感じてしまうのですが、実際にJobHuntingなどで課されるコーディングテストではコードの可読性とtime complexityのどちらを優先させるべきなのでしょうか。
また、近年ではPCのスペックやクラウドのメモリなども増えましたが、それでもやはりできるだけtime complexityを考えてコードを書くエンジニアの方が良いのでしょうか。
実際に書いたO(N**3)
のコード
def solution(A):
for i in range(0, len(A)-1):
for j in range(len(A)-1, i, -1):
if A[j] < A[j-1]:
A[j-1], A[j] = A[j], A[j-1]
check1 = A[len(A)-1] * A[len(A)-2] * A[len(A)-3]
check2 = A[len(A)-1] * A[0] * A[1]
print(A)
if check1 > check2:
return check1
else:
return check2