안녕하세요. IT린이입니다. 오늘은 시간복잡도 계산 방법에 대해 알아보겠습니다. 제가 작성하는 시간복잡도 계산방법이란 시간복잡도를 처음부터 다잡고 가려면 각종 정렬 알고리즘부터 빅오, 빅세타, 빅오메가까지 설명이 길어지거니와 1. 시간복잡도란?시간복잡도란 '해당 알고리즘이 걸리는 시간'을 의미합니다. 1,048,576+1,048,576+1,048,576+1,048,576+1,048,576 과 이 시간복잡도는 컴퓨터의 CPU사용량에 영향을 미칩니다. 지금 Ctrl+Alt+Delete키를 눌러 작업관리자를 켜보세요. 2. 시간복잡도 계산방법
이 알고리즘은 라는 정확한 시간복잡도가 걸리는데요. 여기서 가장 높은 차수만 구해주면 됩니다. 따라서 빅오표기법으로쓰면 로 쓰면 되겠습니다! 즉, 가장 영향력이 높은 차수에서 상수부분을 제외한 값이 빅오표기법이 되겠습니다. **참고 사항 3. 자료구조에 따른 시간복잡도어떤 자료구조를 쓰느냐에 따라 이와같이 시간복잡도가 천차만별입니다. 예를 들면, 힙 자료구조를 사용한 코드입니다.
라는 코드가 있을 때, 시간복잡도는 O(NlogN)이 됩니다. 왜냐하면 힙 자료구조는 O(logN)이라는 시간복잡도이고 While문을 len(n) (==N)크기만큼 순환했기 때문에 N x logN이 됩니다 4. 마무리감사합니다 -IT린이 올림 개발자/Algorithm 알고리즘 문제풀이 시간 복잡도 예상하기 및 시간 측정 방법2021. 11. 25. 00:18
위 근사치를 이용하면 간단하게 입력의 크기와 제한시간으로 정답 알고리즘의 복잡도를 대략적으로나마 예측해 볼 수 있습니다. 문제에서 가장 먼저 확인해야하는 내용은 시간제한(수행시간 요구사항)입니다. 시간제한이 1초인 문제를 만났을 때, 일반적인 기준은 다음과 같습니다. 입력이 10,000,000 개의 경우: O(N) 알고리즘 입력이 50,000 개인 경우: O(N * log N) 알고리즘 입력이 10,000 개인 경우: O(N * N) 알고리즘 입력이 400개: O(N * N * N) 알고리즘 거꾸로 이야기하면 입력이 100개 이하라면 대체로 어떤 알고리즘을 써도 풀릴 가능성이 높고, 입력이 매우 작은 경우는 완전탐색으로도 문제를 풀 수 있을 가능성이 높다는 이야기겠죠. Header: <ctime> 더 정밀하게 측정하고 싶다면 chrono 라이브러리를 참고하세요. clock_t 타입 ctime
Example)
|