1. 시간 복잡도란 무엇일까요?
시간 복잡도는 알고리즘이 실행되는 데 걸리는 시간을 나타내는 척도에요.
쉽게 말해서 문제의 크기에 따라 알고리즘이 얼마나 오래 걸리는지를 나타내요.
예시:
- 정렬 알고리즘 A는 100개의 항목을 정렬하는데 1초, 1000개의 항목을 정렬하는데 10초가 걸립니다.
- 정렬 알고리즘 B는 100개의 항목을 정렬하는데 1초, 1000개의 항목을 정렬하는데 2초가 걸립니다.
알고리즘 A는 알고리즘 B보다 시간 복잡도가 높다고 말할 수 있어요.
2. 공간 복잡도란 무엇인가요?
공간 복잡도는 알고리즘이 실행하는 데 필요한 메모리 공간의 양을 나타내는 척도에요.
쉽게 말해서 문제를 해결하기 위해 알고리즘이 얼마나 많은 메모리를 사용하는지를 나타내요.
예시:
- 정렬 알고리즘 A는 100개의 항목을 정렬하는데 1KB의 메모리를 사용하고, 1000개의 항목을 정렬하는데 10KB의 메모리를 사용합니다.
- 정렬 알고리즘 B는 100개의 항목을 정렬하는데 1KB의 메모리를 사용하고, 1000개의 항목을 정렬하는데 2KB의 메모리를 사용합니다.
알고리즘 A는 알고리즘 B보다 공간 복잡도가 높다고 말할 수 있어요.
3. 시간 복잡도와 공간 복잡도를 왜 알아야 할까요?
시간 복잡도와 공간 복잡도를 알 때의 이점
- 효율적인 알고리즘을 선택할 수 있어요.
- 코드를 최적화할 수 있어요.
- 문제의 난이도를 예측할 수 있어요.
Swift 시간 복잡도 순위
- 아래 표는 일반적인 경우에 대한 시간 복잡도와 공간 복잡도를 나타냅니다. 특정 상황에 따라 달라질 수 있습니다.
- O(1)은 상수 시간, O(n)은 입력 크기에 비례하는 시간을 의미합니다.

Swift 공간 복잡도 순위

효율적인 코드 작성하기
- 최대한 O(1) 시간 복잡도와 O(1) 공간 복잡도를 사용하는 문법을 사용해요.
- 불필요한 루프나 함수 호출은 피해요.
- 알고리즘의 시간 복잡도와 공간 복잡도를 분석하고 코드를 최적화해요.