250x250
반응형
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

재 현

시간복잡도와 공간복잡도 본문

Computer Science/Algorithm

시간복잡도와 공간복잡도

본명은이점례 2023. 7. 23. 00:38
728x90

알고리즘이 실행되는 데 소요되는 시간의 양과 메모리 양을 의미한다.

 

4가지 질문으로 알아보자.

 

 

 

 

Q1. 시간 복잡도와 공간 복잡도가 무엇이고 왜 중요한가?

 

시간 복잡도는 알고리즘이 실행되는 데 소요되는 시간의 양을 분석하는 개념입니다. 입력 크기에 대한 함수로 표현되며, 알고리즘의 실행 속도와 관련이 있습니다. 시간 복잡도를 분석하여 알고리즘의 효율성과 성능을 평가할 수 있습니다.

 

공간 복잡도는 알고리즘이 실행되는 데 필요한 메모리 공간의 양을 분석하는 개념입니다. 입력 크기에 대한 함수로 표현되며, 알고리즘이 사용하는 추가적인 메모리, 데이터 구조, 임시 변수 등을 고려합니다. 공간 복잡도를 분석하여 알고리즘의 메모리 사용량을 평가할 수 있습니다.

 

 

Q2. 어떤 상황에서 시간 복잡도보다 공간 복잡도가 더 중요한가? 반대의 경우는 어떤 경우인가?

 

시간 복잡도가 공간 복잡도보다 더 중요한 경우는 실행 시간이 제한적인 실시간 시스템이나 대규모 데이터 처리 시스템입니다. 이러한 시스템에서는 실시간 반응성이나 처리량을 최대화하는 것이 중요하므로, 빠른 알고리즘이 필요합니다. 따라서 시간 복잡도를 최적화하는 것이 중요합니다.

 

반대로, 공간 복잡도가 시간 복잡도보다 더 중요한 경우는 메모리가 제한적인 임베디드 시스템이나 모바일 애플리케이션입니다. 이러한 시스템에서는 제한된 메모리 자원을 효율적으로 사용해야 하므로, 공간 복잡도를 최적화하는 것이 중요합니다.

 

 

Q3. 공간 복잡도를 줄이기 위해 어떤 방법들이 있을까?

 

1. 데이터 구조의 크기를 최소화합니다. 예를 들어, 정수를 표현하는 데에 32비트 대신 16비트를 사용하거나, 필요한 정보만 저장하는 비트맵을 사용하는 등의 방법이 있습니다.

 

2. 불필요한 데이터를 제거하거나 요약합니다. 예를 들어, 대용량 텍스트 파일을 처리할 때, 일부 정보만을 선택적으로 추출하거나 압축하는 방법을 사용할 수 있습니다.

 

3. 재사용 가능한 데이터 구조를 사용합니다. 예를 들어, 동일한 데이터에 대해 여러 번 연산을 수행해야 할 경우, 중간 결과를 저장하여 다시 계산하지 않도록 할 수 있습니다.

 

4. 외부 저장소를 활용합니다. 대용량 데이터를 처리할 때 메모리에 모두 로드하기 어려운 경우, 디스크 또는 데이터베이스와 같은 외부 저장소를 사용하여 필요한 데이터만 읽거나 쓸 수 있습니다.

 

 

Q4. 시간 복잡도를 줄이기 위해 어떤 방법들이 있을까?

 

1. 더 효율적인 알고리즘을 선택합니다. 다른 알고리즘을 사용하여 동일한 문제를 해결할 수 있는지 검토하고, 더 나은 시간 복잡도를 가지는 알고리즘을 선택합니다.

 

2. 입력 데이터의 크기를 줄입니다. 입력 데이터를 필요 이상으로 처리하지 않고 필요한 부분만을 고려하는 방법을 사용합니다. 예를 들어, 정렬 알고리즘을 적용하기 전에 입력 데이터를 필터링하거나 축소할 수 있습니다.

  • 문제를 더 작은 하위 문제로 분할합니다. 분할 정복 알고리즘과 같은 기법을 사용하여 문제를 더 작은 하위 문제로 분할하여 해결합니다.
  • 캐싱과 메모이제이션을 활용합니다. 중간 결과를 저장하고 재사용하여 반복적인 계산을 피하거나 줄일 수 있습니다. (임시 값 저장, 반복 계산, 해시 맵 사용)
  • 병렬 처리를 사용합니다. 여러 개의 프로세스나 스레드를 사용하여 작업을 동시에 처리하므로 전체 실행 시간을 줄일 수 있습니다.
728x90

'Computer Science > Algorithm' 카테고리의 다른 글

정렬  (0) 2023.07.24
문자열  (0) 2020.11.15
BFS  (0) 2020.11.05
DFS  (0) 2020.11.02
알고리즘 공부법  (0) 2020.10.30