Big O와 시간 복잡도 쉽게 이해하기
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

시간 복잡도의 기초: Big O를 아이처럼 쉽게 이해하기 🍬

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

알고리즘

대상자

  • 대상: 알고리즘 학습자, 인터뷰 준비자, 초보 개발자
  • 난이도: 중간 (기초 개념 설명 + 예제 중심)

핵심 요약

  • 시간 복잡도는 "입력 크기가 커질수록 프로그램이 실행되는 단계 수"를 나타냄.
  • 핵심 Big O:
  • O(1): 상수 시간 (예: get_first(candies)),
  • O(n): 선형 시간 (예: find_sour_candy(candies)),
  • O(n²): 이중 루프 (예: find_duplicates(candies)),
  • O(log n): 이진 검색 (예: binary_search(candies, target)).
  • 알고리즘 선택의 핵심: 데이터 구조와 문제 유형에 따라 적절한 복잡도를 선택해야 함.

섹션별 세부 요약

1. 시간 복잡도의 개념

  • 시간 복잡도는 "입력 크기(n)에 따라 실행 시간이 어떻게 변하는가"를 측정함.
  • 예시:
  • LEGO 블록을 하나씩 놓는 경우: O(n),
  • 정렬된 뽑기장에서 반으로 나누며 검색: O(log n).
  • Big O는 알고리즘의 성능을 추상화하여 비교하는 표준 지표.

2. 코드 예시 분석

  • O(1): get_first(candies) → 항상 첫 번째 요소만 반환.
  • O(n): find_sour_candy(candies) → 모든 요소를 순회해야 함.
  • O(n²): find_duplicates(candies) → 이중 루프로 모든 쌍을 비교.
  • O(log n): binary_search(candies, target) → 반복적으로 범위를 절반으로 줄임.

3. 시간 복잡도 표 및 데이터 구조별 예시

  • 배열:
  • Traversal → O(n),
  • Merge Sort → O(n log n).
  • 해시 테이블:
  • Insert/Search/Delete → O(1) (평균).
  • 트리:
  • Inorder Traversal → O(n),
  • Height 계산 → O(n).
  • 그래프:
  • DFS/BFS → O(V + E) (V: 정점, E: 간선).

결론

  • 실무 팁:
  • 정렬된 데이터는 O(log n) 알고리즘 (예: 이진 검색)을 사용,
  • 중첩 루프를 피하고 O(n) 또는 O(n log n) 알고리즘을 선택,
  • Big O는 알고리즘의 효율성을 측정하는 핵심 지표로, 성능 최적화에 필수.