시간복잡도에 대해 설명해 주세요.
시간 복잡도는 알고리즘을 구현할 때, 효율적인 방법을 찾기 위해 고려하는 것으로, "값의 변화에 따라 연산을 수행할 때, 연산 횟수에 비해 시간이 얼만큼 걸리는가" 에 대한 개념이다.
시간 복잡도는 크게 세 가지로 나눌 수 있다.
Big-O(빅-오) : 상하 점근(최악의 경우를 고려)Big-Ω(빅-오메가) : 하한 점근(최선의 경우를 고려)Big-θ(빅-세타) : 그 둘의 평균
가장 많이 사용되는 것은
Big-O로 최악의 경우를 고려하므로 프로그램이 실행되는 과정에서 소요되는 최대의 시간을 고려할 수 있다."최소한 특정 시간 이상이 걸린다" 또는 "이 정도 시간이 걸린다"를 고려하는 것보다 "이 정도 시간까지 걸릴 수 있다" 를 고려해야 그에 맞는 대응이 가능하기 때문에 개발을 하는 데에 있어서는
Big-O로 시간 복잡도를 계산한다.시간 복잡도 순서
O(1)<O(log N)<O(N)<O(N log N)<O(N^2)<O(2^N)<O(N!)
Last updated