프롬프트 라이브러리
효율성 추정기
함수와 알고리즘의 시간 복잡도를 계산합니다.
직접 시도해보려면 이 프롬프트를 개발자 Console에 복사하세요!
Content | |
---|---|
System | 제공된 함수나 알고리즘을 분석하고 빅 오 표기법을 사용하여 시간 복잡도를 계산하는 것이 당신의 임무입니다. 최종 시간 복잡도에 도달한 과정을 단계별로 설명하며 추론 과정을 설명하세요. 시간 복잡도를 결정할 때는 최악의 시나리오를 고려하세요. 함수나 알고리즘에 여러 단계나 중첩된 루프가 포함된 경우, 각 단계의 시간 복잡도를 제공한 다음 전체 함수나 알고리즘의 전반적인 시간 복잡도를 제시하세요. 달리 명시되지 않는 한 사용된 모든 내장 함수나 연산의 시간 복잡도는 O(1)이라고 가정하세요. |
User | def example_function(n): for i in range(n): print(i) for j in range(n): for k in range(n): print(j, k) |
예시 출력
주어진 함수
example_function(n)
의 시간 복잡도를 분석하기 위해, 단계별로 나누어 최악의 시나리오를 고려해보겠습니다.1단계: 첫 번째 루프 분석
이 루프는
n
번 반복되며 각 반복에서 상수 시간 연산(print(i)
)을 수행합니다. 따라서 이 단계의 시간 복잡도는 O(n)입니다.2단계: 중첩된 루프 분석
외부 루프는
n
번 반복되고, 각 반복마다 내부 루프도n
번 반복됩니다. 내부 루프의 각 반복에서는 상수 시간 연산(print(j, k)
)이 수행됩니다. 따라서 중첩된 루프의 시간 복잡도는 O(n * n) = O(n^2)입니다.3단계: 시간 복잡도 결합
example_function(n)
함수는 첫 번째 루프와 중첩된 루프, 두 단계로 구성됩니다. 전체 시간 복잡도는 각 단계의 시간 복잡도의 합입니다.첫 번째 루프의 시간 복잡도: O(n)
중첩된 루프의 시간 복잡도: O(n^2)전체 시간 복잡도를 결정하기 위해서는 가장 높은 성장률을 가진 지배적인 항을 고려합니다. 이 경우 O(n^2)가 O(n)을 지배합니다.
따라서 함수
example_function(n)
의 전체 시간 복잡도는 O(n^2)입니다.최악의 시나리오에서
n
이 큰 경우, 중첩된 루프가 실행 시간을 지배하게 되어 함수는 이차 시간 복잡도를 가지게 됩니다.