알고리즘 복잡도와 Big-O 표기법
점근적 표기법(Big-O, Big-Omega, Big-Theta)과 핵심 산출 규칙
알고리즘의 성능은 컴퓨터의 CPU 사양에 따라 측정 시간(초)이 달라지므로, 절대적인 시간이 아니라 입력 데이터 크기 이 무한히 커질 때 기본 연산 횟수가 증가하는 추세로 평가합니다.
시간 복잡도 계층 순서와 대표 알고리즘 매핑
이 커질 때 효율적인(빠른) 순서부터 비효율적인(느린) 순서대로 나열하면 다음과 같습니다:
for문, 선형 탐색, 최댓값/최솟값 찾기).for문 (버블·선택·삽입 정렬).1) 코드 (A) 분석:
변수 i가 N에서 시작하여 매 반복마다 절반(1/2)으로 줄어듭니다: N → N/2 → N/4 → ... → N/(2^k) = 1.
양변에 2^k를 곱하고 로그를 취하면 k = log₂ N번 반복하므로 시간 복잡도는 O(log N)입니다.
2) 코드 (B) 분석:
바깥 루프는 1부터 N까지 총 N번 실행됩니다.
안쪽 루프는 j가 1, 2, 4, 8, ..., 2^k ≤ N으로 2배씩 커지므로 log₂ N번 실행됩니다.
서로 독립적인 두 루프가 중첩되어 있으므로 두 횟수를 곱하여 시간 복잡도는 O(N log N)이 됩니다.
코딩 테스트 실전: 제한 시간 1초와 입력 크기(N)별 알고리즘 선택법
현대 채점 서버(CPU)는 1초에 약 번의 단순 연산을 처리합니다. 문제에서 주어진 의 최대 크기를 보면 어떤 시간 복잡도의 알고리즘을 설계해야 시간 초과(TLE)를 피할 수 있는지 즉시 역산할 수 있습니다.
for문, 2차원 동적 계획법(DP).핵심 요약
- ✓Big-O 표기법은 최악의 경우(Worst Case) 연산 횟수의 점근적 상한을 나타내며, 상수 계수와 낮은 차수의 항은 모두 제거한다.
- ✓시간 복잡도 효율 순서는 O(1) < O(log N) < O(N) < O(N log N) < O(N²) < O(2^N) < O(N!) 순이다.
- ✓탐색 범위가 매 단계 절반으로 줄어들거나 2배씩 건너뛰는 루프의 시간 복잡도는 O(log N)이다.
- ✓컴퓨터는 1초에 약 1억(10^8) 번 연산하므로, N = 100,000일 때는 O(N²)이 아닌 O(N log N) 이하의 알고리즘을 설계해야 한다.