시간 복잡도와 Big-O

2025. 4. 15. 12:34·Computer Science
목차
  1. Big-O가 뭔가요?
  2. 자주 쓰이는 시간 복잡도 예시
  3. 실행 시간 비교
  4. 실무에서 왜 중요할까?
  5. 정리
728x90

Big-O가 뭔가요?

시간 복잡도TimeComplexityTimeComplexity는 입력 크기nn에 따라 알고리즘의 실행 시간이 어떻게 증가하는지를 수학적으로 표현한 것이고, 그걸 나타내는 게 Big-O 표기법입니다.

 

예를 들어, 리스트에서 값을 찾는 코드를 보겠습니다.

def find_value(arr, target):
	for i in arr:
    	if i == target:
        	return True
    return False

 

 

 

이 함수는 arr에 값이 있을 때까지 앞에서부터 하나씩 검사하죠.
입력 길이 n이 길어질수록 비교 횟수도 많아져요.
=> Onn, 즉 선형 시간 복잡도.


자주 쓰이는 시간 복잡도 예시

Big-O 설명 예시
O11 입력 크기에 상관없이 실행 시간 일정 딕셔너리 key조회
Olognlogn 절반씩 줄이면서 탐색 이진 탐색
Onn 모든 요소를 한 번씩 선형 탐색
Onlognnlogn 정렬 알고리즘의 평균 병합 정렬, 퀵 정렬
On² 이중 반복문 버블 정렬
O2ⁿ, On! 매우 비효율적 피보나치재귀, 순열 생

실행 시간 비교

import time

def constant_time():
    return 42

def linear_time(n):
    for _ in range(n):
        pass

def quadratic_time(n):
    for _ in range(n):
        for _ in range(n):
            pass

for n in [1000, 10000, 20000]:
    start = time.time()
    linear_time(n)
    end = time.time()
    print(f"O(n) with n={n}: {end - start:.6f} sec")

    start = time.time()
    quadratic_time(n)
    end = time.time()
    print(f"O(n^2) with n={n}: {end - start:.6f} sec")
    
    
    
# O(n) with n=1000: 0.000035 sec
# O(n^2) with n=1000: 0.087654 sec

 

작은 입력에서는 큰 차이가 없지만, n이 커질수록 On²은 엄청 느려집니다.


실무에서 왜 중요할까?

  • 검색 속도: 사용자 100만 명 중 특정 ID 찾을 때, On vs O1의 차이
  • 정렬/필터링: API 서버에서 정렬을 맡길지, DB에서 처리할지 판단 기준
  • 메모리 효율까지 고려: 시간 복잡도뿐 아니라 공간 복잡도도 함께 고려
  •  

정리

기억할 것 설명
시간 복잡도는 "성능의 나침반" 알고리즘 효율을 비교하는 기준
Big-O는 최악의 경우를 표현 평균이나 최선은 따로 분석할 수도
Python은 느릴 수 있다 시간복잡도는 동일해도 언어 차이로 느릴 수 있
728x90
반응형
저작자표시 비영리 변경금지 새창열림

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

이진 탐색BinarySearch, 선형 탐색보다 얼마나 빠를까?  0 2025.04.15
정렬 알고리즘 버블,선택,삽입  0 2025.04.15
람다lambda 함수란?  0 2025.04.11
클라우드 IaaS, PaaS, SaaS 비교  0 2024.03.04
ad-hoc이란? adhoc  1 2023.11.01
  1. Big-O가 뭔가요?
  2. 자주 쓰이는 시간 복잡도 예시
  3. 실행 시간 비교
  4. 실무에서 왜 중요할까?
  5. 정리
'Computer Science' 카테고리의 다른 글
  • 이진 탐색BinarySearch, 선형 탐색보다 얼마나 빠를까?
  • 정렬 알고리즘 버블,선택,삽입
  • 람다lambda 함수란?
  • 클라우드 IaaS, PaaS, SaaS 비교
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post 146
      • python 45
        • selenium 4
        • algorithm 9
        • Django 6
        • Pandas | Numpy 22
      • SQL 9
      • Data Engineer 29
      • Data Scientist 3
      • Data Analysis 9
      • Computer Science 35
      • Why? 15
      • 마음가짐 1
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
시간 복잡도와 Big-O
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.