[これが符号化テストである]第2講アルゴリズム性能評価
📍 複雑さ
📍 複雑度マーク方法
大文字(Big-O)
→関数の上限のみ保持
ex)演算回数3 N**2+5 N+10000000のアルゴリズムO(N**2)
📍 複雑度の順序
ますます複雑になる
1.O(1):一定時間
2.O(logn):ログ時間
3.O(N):線形時間
4.O(Nlogn):ログ線形時間
5.O(N**2):サブタイム
6.O(N***3):三次時間
7.O(2**N):指数時間
ex.
array = [3, 5, 1, 2, 4] # 데이터 개수 N = 5
summary = 0
for x in array:
summary += x
print(summary)
実行時間はデータ数Nに比例する⇒ O(N)
ex.
array = [3, 5, 1, 2, 4] # 데이터 개수 N = 5
for i in array:
for j in array:
temp = i * j
print(temp)
⇒ O(N**2)(すべての重複文がO(N**2)の時間的複雑さを有するわけではない)
📍 アルゴリズムせっけいそう
1.一般的に5億回を超えるとPythonは5~15秒かかる
◇コードテスト時間制限:1~5秒
◇時間制限が明確に規定されていない場合は、約5秒後に解除
2.PypyはCより速い場合があります
*Pythonコードがタイムアウトと判定された場合は、Pypyを再発行してみてください
3.優先確認時間制限
◆データ個数がN、時間制限が1秒の場合
N≦500:O(N***3)アルゴリズム設計;
N≦2000:O(N***2)アルゴリズム設計;
N≦100000:O(Nlogn)アルゴリズム設計;
N≦1000000:O(N)アルゴリズム設計
📍 アルゴリズムのトラブルシューティングプロセス
📍 実行時間計測ソースコード
import time
start_time = time.time()
### 소스코드 ###
end_time = time.time()
print("time: ", end_time - start_time)
📍 ソース
これは就職のためのコードテストで、Python-羅東彬と
Reference
この問題について([これが符号化テストである]第2講アルゴリズム性能評価), 我々は、より多くの情報をここで見つけました https://velog.io/@sukyeongs/이것이-코딩-테스트다-2강-알고리즘-성능평가テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol