알고리즘이란?
좋은 알고리즘이란?
프로그램 = 자료구조 + 알고리즘
자료구조의 효율성은 자료구조에 대해 수행되는 연산의 수행시간으로 측정한다.
수행시간을 나타내는 시간복잡도(Time Complexity)와 사용되는 메모리 공간의 크기를 나타내는 공간복잡도(Space Complexity)에 기반하여 측정
대부분의 경우, 시간복잡도만을 사용하여 성능을 분석한다.
수행시간은 알고리즘이 수행하는 기본 연산 횟수를 입력 크기에 대한 함수로 표현한다.
F(N)
이러한 함수는 다항식으로 표현되며, 이를 입력의 크기에 대한 함수로 표현하기 위해 점근표기법을 사용한다.
result = 0
for i in range(n):
result += i
print(result)
위 코드는 1부터 n까지 더하는 코드로, 연산을 n번 수행
이 코드의 시간복잡도는 O(n)
result = 0
for i in range(n):
for j in range(n):
result += j
print(result)
result = 0
result2 = 0
for i in range(n):
for j in range(n):
result += j
for i in range(n):
result2 += i
print(result + result2)
위 두 코드의 시간복잡도는 모두 O(N^2)
O(1) : 상수시간(Constant Time)
O(logN) : 로그 시간 (Logarithmic Time)
O(N) : 선형시간(Linear Time)
O(NlogN) : 로그선형시간(Log-linear Time)
O(N^2) : 제곱시간(Quadratic Time)
