본문 바로가기
프로그래밍 언어(Programming Languages)/코딩 알고리즘

📌 Big O 표기법 완전 쉽게 이해하기: 알고리즘 효율성의 기본!

by 데이터 벌집 2025. 1. 24.
반응형

📌  Big O 표기법 완전 쉽게 이해하기: 알고리즘 효율성의 기본!

 

📌 Big O 표기법 완전 쉽게 이해하기: 알고리즘 효율성의 기본!


🚀 Big O 표기법이란?

Big O 표기법은 알고리즘이 얼마나 빠르고 효율적인지 설명하는 방법이에요. 🤔
복잡하게 들리지만, 입력 크기가 커질수록 알고리즘이 얼마나 느려지거나 빨라지는지를 알려주는 거예요.

💡 예를 들어볼게요:

1️⃣ 친구가 카페에서 잃어버린 가방을 찾으려고 합니다.

  • 방법 1: 모든 테이블을 하나씩 확인하며 찾는다 → 선형 검색 (O(n))
  • 방법 2: 테이블 번호가 순서대로 적혀 있다면, 중간부터 시작해서 가방이 있는지 확인하고 반씩 나눈다 → 이진 검색 (O(log n))

결론: 테이블 수가 많아질수록 이진 검색이 훨씬 빠르다는 것을 알 수 있어요.


🔑 Big O 표기법을 쉽게 알아보기

O(1) 상수 시간 "첫 번째 테이블만 확인" 입력 크기에 관계없이 시간이 항상 일정해요.
O(log n) 로그 시간 "테이블을 반씩 나눠 확인" 입력 크기가 커져도 천천히 증가해요.
O(n) 선형 시간 "모든 테이블 확인" 입력 크기가 커질수록 직선적으로 증가해요.
O(n²) 이차 시간 "모든 테이블에서 모든 손님을 다시 확인" 입력 크기가 커지면 훨씬 느려져요.

🛠️ 실생활 예제로 이해하기: 도서관에서 책 찾기

📚 문제: 도서관에서 특정 책을 찾아야 해요.

1️⃣ O(n) – 선형 검색

  • 방법: 처음부터 한 권씩 차례대로 확인합니다.
  • 결과: 책이 뒤쪽에 있으면 시간이 오래 걸려요.

2️⃣ O(log n) – 이진 검색

  • 방법: 책이 순서대로 정렬되어 있다면, 중간부터 시작해 필요한 책이 앞쪽인지 뒤쪽인지 확인하며 반씩 나눕니다.
  • 결과: 찾는 책이 어디에 있든 빠르게 찾을 수 있어요.

🧮 간단한 파이썬 예제

선형 검색

def linear_search(books, target):
    for i, book in enumerate(books):
        if book == target:
            return i  # 책의 위치 반환
    return -1  # 책이 없으면 -1 반환

# 예제 실행
books = ["Book1", "Book2", "Book3", "Book4"]
print(linear_search(books, "Book3"))  # 출력: 2

이진 검색

def binary_search(books, target):
    left, right = 0, len(books) - 1
    while left <= right:
        mid = (left + right) // 2
        if books[mid] == target:
            return mid
        elif books[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

# 예제 실행
books = ["Book1", "Book2", "Book3", "Book4"]
print(binary_search(books, "Book3"))  # 출력: 2

 


🎯 Big O 표기법을 왜 알아야 할까?

1️⃣ 효율적인 프로그램 설계: 입력 데이터가 많아질수록 어떤 알고리즘이 효율적인지 알 수 있어요.

  • 예: 정렬된 데이터에서는 이진 검색이 훨씬 효율적!

2️⃣ 성능 예측 가능: 입력 크기가 커질 때, 프로그램이 얼마나 느려질지 예측할 수 있어요.

  • 예: 검색 대상이 10개일 땐 선형 검색도 괜찮지만, 1억 개라면 이진 검색이 필수입니다.

💬 결론: Big O는 이렇게 기억하세요!

  • O(1): 항상 빠르다 (상수 시간)
  • O(log n): 큰 데이터도 빠르게 (로그 시간)
  • O(n): 데이터가 많아지면 느려진다 (선형 시간)
  • O(n²): 데이터가 조금만 늘어도 훨씬 느려진다 (이차 시간)

🌟 한 줄 요약

Big O는 알고리즘의 효율성을 보여주는 나침반이에요. 더 빠르고 효율적인 코드를 짜고 싶다면 꼭 알아두세요! 😊

반응형