시간복잡도와 공간복잡도 란?

JAEYEON·2023년 6월 20일

시간복잡도(Time Complexity):

시간복잡도는 특정 알고리즘이 어떤 문제를 해결하는 데 얼마나 많은 시간이 걸리는지를 나타내는 지표입니다. 이는 일반적으로 입력의 크기에 따라 얼마나 시간이 증가하는지를 나타냅니다. 즉, 입력 데이터의 크기가 클수록 더 많은 계산이 필요하므로 시간복잡도는 증가합니다. 예를 들어, 단순하게 생각해보면, 정렬되지 않은 리스트에서 가장 큰 수를 찾는 문제가 있다고 할 때, 이 문제를 해결하기 위해서는 모든 요소를 살펴보아야 하므로, 리스트의 크기가 n일 때, 시간 복잡도는 O(n)이 됩니다.

공간복잡도(Space Complexity):

공간복잡도는 특정 알고리즘이 어떤 문제를 해결하는 데 얼마나 많은 메모리 공간이 필요한지를 나타내는 지표입니다. 이는 마찬가지로 입력의 크기에 따라 얼마나 공간이 증가하는지를 나타냅니다. 예를 들어, 재귀적으로 피보나치 수를 계산하는 알고리즘은 호출 스택에 대한 메모리가 필요하기 때문에, 입력 크기 n에 대해 공간 복잡도는 O(n)이 됩니다.

시간복잡도와 공간복잡도는 알고리즘의 성능을 평가하는 중요한 지표입니다. 그러나 이 두 지표는 서로 트레이드오프 관계에 있을 수 있습니다. 즉, 더 빠른 시간 복잡도를 얻기 위해 더 많은 공간을 사용하는 알고리즘을 선택할 수 있고, 반대로 더 적은 메모리를 사용하면서 더 많은 시간을 소비하는 알고리즘을 선택할 수도 있습니다. 이러한 선택은 특정 애플리케이션의 요구 사항, 사용 가능한 리소스, 문제의 특성 등에 따라 달라집니다.

profile
프론트엔드 개발자

0개의 댓글