본문 바로가기

스터디

코딩테스트-시간복잡도

반응형

시간복잡도 (Time Complexity)

시간복잡도란 알고리즘이 얼마나 시간이 걸리는지를 계산하는 척도다. 실제 초 단위 시간이 아니라, 입력 크기(n)에 따라 반복(연산) 횟수가 어떻게 늘어나는지를 중점으로 본다.


빅오 표기법 (Big-O)

빅오 표기법은 복잡도를 나타내는 대표 방식으로, 가장 크게 증가하는 항(최고차항)만 남기고 나머지는 생략한다.

2n² + 3n + 100   →   O(n²)
  • 계수(2, 3)와 상수(100)는 무시한다.
  • n이 커질수록 결국 가장 큰 항이 전체를 지배하기 때문이다.

대표 복잡도 읽는 법

  • 다항 (n, n², n³ ...) : 중첩된 for문의 개수 = 차수. 이중 포문이면 O(n²), 삼중 포문이면 O(n³).
  • 로그 (log n) : 매번 범위가 반으로(또는 일정 비율로) 줄어드는 경우. 밑을 몇 번 곱해 n에 도달하느냐로 결정된다. (예: 이분 탐색)
  • 지수 (2ⁿ) : 매 단계마다 경우의 수가 배로 늘어나는 경우. (예: 부분집합 완전탐색)
// O(n) — 반복 1번
for(int i = 0; i < n; i++) { ... }

// O(n²) — 중첩 2번
for(int i = 0; i < n; i++)
    for(int j = 0; j < n; j++) { ... }

// O(log n) — 매번 절반으로 감소
while(n > 1) { n /= 2; }

재귀 함수의 복잡도

재귀 함수의 시간복잡도는 다음처럼 계산한다.

재귀 복잡도 = (함수 호출 횟수) × (호출 1번당 작업량)

메인 로직의 작업량 × 함수가 호출되는 총 횟수다. 예를 들어 호출마다 O(1) 작업을 하고 총 2ⁿ번 호출된다면 전체는 O(2ⁿ)이 된다.


정리

  • 시간복잡도는 반복 횟수의 증가 추세를 본다.
  • 빅오는 최고차항만 남긴다.
  • 중첩 for문 개수 = 다항 차수, 절반씩 줄면 log, 배로 늘면 지수.
  • 재귀는 호출 횟수 × 호출당 작업량으로 계산한다.

'스터디' 카테고리의 다른 글

*  (0) 2026.07.03
코딩테스트-조합  (0) 2026.07.02
코딩테스트-순열  (0) 2026.07.01
쪼아요 쪼아요~ 웹소설 쪼아요~  (1) 2026.01.15
oh-my-opencode 리뷰  (0) 2026.01.14