시간복잡도 와 공간복잡도 ( Time Complexity & Space Complexity )
Last updated
Last updated
어떤 알고리즘의 성능을 보기위해 복잡도를 분석하는데 무엇을 중점에 두어 분석하냐에 따라 크게 시간 복잡도와 공간 복잡도로 나뉜다.
이를 표기하는 방법에는 여러가지가 있는 데 대체로 빅오(O)와 세타( Θ)표기법이 쓰이며, 빅오가 가장 많이 쓰인다.
아래의 사진은 빅오의 복잡도 그래프 이며 O(1) 부터 ~ O(n!)순으로 복잡도가 증가하게 된다.
시간 복잡도라면 뒤로 갈수록 시간이 오래 걸리는 알고리즘.
공간 복잡도라면 뒤로 갈수록 공간(자원)을 많이 사용하는 알고리즘.
(사진 출처 : https://www.bigocheatsheet.com/ )
어떠한 알고리즘을 수행하는 데 몇번의 연산이 이루어지는 지를 표기한 것.
여기서 연산의 개수는 입력한 데이터가 n이고, 이 n에 따른 연산의 개수를 함수로 나타낸 것이 시간 복잡도 함수이다.
어떠한 알고리즘을 완료하는데 필요로 하는 공간(자원)의 양.
총 요구하는 공간 = 고정 공간 + 가변 공간
시간 복잡도와 공간 복잡도가 대체로 반비례
관계를 갖는다.
그 중간점을 잘 타협 하는 것이 중요하다.
또한, 최근에는 메모리(자원)이 많이 싸지게 되면서 공간을 어느정도 차지해도 시간이 빠른 알고리즘이 더 좋다.