복잡도는 알고리즘의 성능을 나타내는 척도로 사용되며, 크게 시간 복잡도와 공간 복잡도로 나뉜다.
또한, 복잡도를 말할때 확장성에 대한 이야기가 자주 거론 되는데,
복잡한 시스템이나 알고리즘은 리소스를 더 많이 필요로 하기 때문에 확장성이 떨어질 수 있다는 것이다.
높은 계산 복잡도나 시스템 복잡도를 가진 애플리케이션은 대량의 데이터나 사용자를 처리하는데 어려움을 겪을 수 있기 때문.
아무튼, 그 말인즉 알고리즘의 구조를 보다 '효율적으로' 짜게 된다면 시스템의 확장과 유지보수면에서 유리한면이 있다는 것.
그렇다면 시간 복잡도는 무엇일까?
시간 복잡도는 알고리즘이 입력 크기에 따라 얼마나 빠르게 실행되는지를 나타내는 개념이다.
보통 입력 크기는 주어진 데이터의 개수, 배열의 길이 또는 주요 로직의 반복 횟수 등으로 측정된다.
하지만, 시간이라는 것은 컴퓨터의 사양 등 다양한 요소에서 영향을 받는다.
정리하자면, 시간 복잡도는 시간으로 표현하는 것이 아닌, 알고리즘이나 코드의 실행 시간을 입력 크기에 대한 함수로 표현하는 것