October 30, 2020
알고리즘의 성능을 나타내는 척도
복잡도의 측정을 통해 얻을 수 있는 것
시간복잡도와 공간복잡도는 Trade-off가 성립
데이터가 두 배로 증가할 때마다 한 단계씩 늘어나는 알고리즘
def is_prime(number):
for i in range(2, number):
if number % i == 0:
return False
return True
function hasDuplicateValue(array) {
var existingNumbers = []
for (var i = 0; i < array.length; i++) {
if (existingNumbers[array[i]] === undefined) {
existingNumbers[array[i]] = 1
} else {
return true
}
}
return false
}
true
false
Θ(1)
Θ(n)
Θ(n^log n)
Θ(n^4)
T(n) = Θ(2^n)
factorial 메소드의 시간복잡도를 구하여라
int factorial(int n) {
if (n ==1)
return 1;
else
return n * factorial(n-1)
}
T(n) = O(1) + (n-1) * O(1) = O(n)
🍯 Tip!
다항함수 < 지수함수 < 팩토리얼 <
import time
start_time = time.time() # 측정 시작
...
프로그램 소스코드
...
end_time = time.time() # 측정 죵로
print("time: ", end_time - start_time) # 수행 시간 출력
🍯 Tip!
시간 제한이 1초일 때 N의 범위 별로 아래의 시간 복잡도인 알고리즘을 설계하면 문제를 풀 수 있다.
Source