시간 복잡도, 공간 복잡도

Jaby·2024년 3월 15일
0

SwiftBasic

목록 보기
11/20
post-thumbnail

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) 공간 복잡도를 사용하는 문법을 사용해요.
  • 불필요한 루프나 함수 호출은 피해요.
  • 알고리즘의 시간 복잡도와 공간 복잡도를 분석하고 코드를 최적화해요.
profile
hello, world!

0개의 댓글

관련 채용 정보