オンラインでコーディングテスト練習ができる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