[μ•Œκ³ λ¦¬μ¦˜] μ‹œκ°„ λ³΅μž‘λ„μ™€ 곡간 λ³΅μž‘λ„ + Big O ν‘œκΈ°λ²•

2025. 10. 2. 01:36Β·βš™οΈ CS/πŸ“š 자료ꡬ쑰 & μ•Œκ³ λ¦¬μ¦˜

μ‹œκ°„ λ³΅μž‘λ„

  • μž…λ ₯ 크기에 λŒ€ν•΄ μ–΄λ–€ μ•Œκ³ λ¦¬μ¦˜μ΄ μ‹€ν–‰λ˜λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„
  • μž…λ ₯ 데이터 개수(n)κ°€ λŠ˜μ–΄λ‚ μˆ˜λ‘ 컴퓨터가 κ·Έ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ”λ°λŠ” μ–Όλ§ˆλ‚˜ μ‹€ν–‰ μ‹œκ°„μ΄ λŠ˜μ–΄λ‚ κΉŒ?
    • μ‹€μ œ μ‹œκ°„μ„ μž¬λŠ” 게 μ•„λ‹ˆλΌ μ—°μ‚° 횟수λ₯Ό κΈ°μ€€μœΌλ‘œ μΈ‘μ •

곡간 λ³΅μž‘λ„

  • ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰μ‹œμΌ°μ„ λ•Œ ν•„μš”λ‘œ ν•˜λŠ” λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ μ–‘
  • μž…λ ₯ 데이터 개수(n)κ°€ λŠ˜μ–΄λ‚ μˆ˜λ‘ μ–Όλ§ˆλ‚˜ λ§Žμ€ μ–‘μ˜ 데이터가 λ©”λͺ¨λ¦¬μ— μ €μž₯λ˜μ–΄μ•Ό ν• κΉŒ?

Big O ν‘œκΈ°λ²•

  • Big O ν‘œκΈ°λ²•μ€ μž…λ ₯ n이 μΆ©λΆ„νžˆ μ»€μ‘Œμ„ λ•Œ ν•¨μˆ˜λ‘œ λ‚˜νƒ€λ‚΄λŠ”, μ•Œκ³ λ¦¬μ¦˜μ˜ λ³΅μž‘λ„λ₯Ό ν‘œν˜„ν•˜λŠ” λ°©λ²•μœΌλ‘œ, μ΅œμ•…μ˜ 경우(μ›ŒμŠ€νŠΈ μΌ€μ΄μŠ€)λ₯Ό κΈ°μ€€μœΌλ‘œ ν•©λ‹ˆλ‹€.
  • μ΄λ•Œ μ΅œμ•…μ˜ κ²½μš°λŠ” 데이터 μž…λ ₯ μƒνƒœ 쀑 μ•Œκ³ λ¦¬μ¦˜μ΄ κ°€μž₯ 였래 κ±Έλ¦¬λŠ” 경우λ₯Ό λ§ν•©λ‹ˆλ‹€.
  • μ΅œμ•…μ˜ 경우의 μ„±λŠ₯을 λ‚˜νƒ€λ‚΄κΈ° λ•Œλ¬Έμ— μ•Œκ³ λ¦¬μ¦˜μ˜ μ•ˆμ •μ μΈ μ΅œμ†Œ μ„±λŠ₯을 보μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

예λ₯Ό λ“€μ–΄,

  • `f(n)=3n²+2n`이면 f(n)의 Big OλŠ” `g(n)= n²`이닀.
  • `f(n)=4n³+n+5`이면 f(n)의 Big OλŠ” `g(n)= n³`이닀.

이처럼 Big O ν‘œκΈ°λ²•μ—μ„œλŠ” μ•„λž˜ 두 원리λ₯Ό μ§€ν‚€λ©΄ λ©λ‹ˆλ‹€.

  • μ΅œκ³ μ°¨ν•­μ˜ 차수만 λ³Έλ‹€.
  • μƒμˆ˜ν•­μ€ λ¬΄μ‹œν•œλ‹€.

 

 

이 κ·Έλž˜ν”„λŠ” Big O ν‘œκΈ°λ²•μ—μ„œ 주둜 μ‚¬μš©λ˜λŠ” ν‘œκΈ°λ“€μ˜ μž…λ ₯ κ°œμˆ˜μ— λ”°λ₯Έ μ„±λŠ₯ 차이λ₯Ό λ‚˜νƒ€λ‚Έ κ²ƒμž…λ‹ˆλ‹€.

μ•Œκ³ λ¦¬μ¦˜μ˜ λ³΅μž‘λ„κ°€ λΉ¨κ°„ μ˜μ—­(`O(n²)`, `O(2n)`, `O(n!)`)에 μ†ν•œλ‹€λ©΄ μ•Œκ³ λ¦¬μ¦˜ μˆ˜μ •μ΄ ν•„μš”ν•˜λ‹€λŠ” λœ»μž…λ‹ˆλ‹€.

 

자주 μ‚¬μš©λ˜λŠ” Big O μ˜ˆμ‹œ

 

  • O(1) - μƒμˆ˜ μ‹œκ°„: μž…λ ₯ 크기에 상관없이 일정함.
  • O(logn) - 둜그 μ‹œκ°„: μž…λ ₯ 크기가 컀져도 μ‹œκ°„μ΄ 맀우 느리게 증가 (예: 이진 탐색).
  • O(n) - μ„ ν˜• μ‹œκ°„: μž…λ ₯ 크기에 λΉ„λ‘€ν•˜μ—¬ 증가 (예: λ°°μ—΄ 순차 탐색, 반볡문).
  • O(nlogn) - μ„ ν˜• 둜그 μ‹œκ°„: 효율적인 μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜μ—μ„œ ν”νžˆ λ‚˜νƒ€λ‚¨ (예: 퀡 μ •λ ¬, 병합 μ •λ ¬).
  • O(n2) - 2μ°¨ μ‹œκ°„: μž…λ ₯ 크기의 μ œκ³±μ— λΉ„λ‘€ν•˜μ—¬ 증가 (예: 이쀑 반볡, 버블 μ •λ ¬).
  • O(2n) - μ§€μˆ˜ μ‹œκ°„: μž…λ ₯이 쑰금만 컀져도 μ‹œκ°„μ΄ κΈ°ν•˜κΈ‰μˆ˜μ μœΌλ‘œ 증가 (맀우 λΉ„νš¨μœ¨μ ).

 


참고자료

λΉ…μ˜€ ν‘œκΈ°λ²• (big-O notation) μ΄λž€

 

'βš™οΈ CS > πŸ“š 자료ꡬ쑰 & μ•Œκ³ λ¦¬μ¦˜' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[자료ꡬ쑰] λΉ„μ„ ν˜• 자료 ꡬ쑰 κ°œλ… 정리 | κ·Έλž˜ν”„, 트리, νž™, μš°μ„ μˆœμœ„ 큐, μ…‹, λ§΅, ν•΄μ‹œ ν…Œμ΄λΈ”  (0) 2025.10.18
[자료ꡬ쑰] μ„ ν˜• 자료 ꡬ쑰  (0) 2025.10.02
[자료ꡬ쑰][μ•Œκ³ λ¦¬μ¦˜] Big O ν‘œκΈ°λ²•  (1) 2025.02.13
'βš™οΈ CS/πŸ“š 자료ꡬ쑰 & μ•Œκ³ λ¦¬μ¦˜' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [자료ꡬ쑰] λΉ„μ„ ν˜• 자료 ꡬ쑰 κ°œλ… 정리 | κ·Έλž˜ν”„, 트리, νž™, μš°μ„ μˆœμœ„ 큐, μ…‹, λ§΅, ν•΄μ‹œ ν…Œμ΄λΈ”
  • [자료ꡬ쑰] μ„ ν˜• 자료 ꡬ쑰
  • [자료ꡬ쑰][μ•Œκ³ λ¦¬μ¦˜] Big O ν‘œκΈ°λ²•
μ†Œμ˜ πŸ€
μ†Œμ˜ πŸ€
Hello World ✨
  • μ†Œμ˜ πŸ€
    Soyoung's Dev Lab
    μ†Œμ˜ πŸ€
  • 전체
    였늘
    μ–΄μ œ
  • κΈ€μ“°κΈ° 관리
    • λΆ„λ₯˜ 전체보기 (79)
      • πŸ“’ κ²Œμ‹œνŒ (0)
      • 🌿Spring (20)
      • β˜•Java (7)
        • μ½”λ”©ν…ŒμŠ€νŠΈ (7)
      • βš™οΈ CS (26)
        • πŸ›œ λ„€νŠΈμ›Œν¬ (5)
        • πŸ“Š λ°μ΄ν„°λ² μ΄μŠ€ (8)
        • πŸ–²οΈμš΄μ˜μ²΄μ œ (9)
        • πŸ“š 자료ꡬ쑰 & μ•Œκ³ λ¦¬μ¦˜ (4)
      • πŸ“€ 배포 (4)
        • Docker (4)
        • AWS (0)
      • πŸ“° 기타 개발 자료 (12)
      • πŸ–₯️ ν”„λ‘œμ νŠΈ (0)
      • πŸ‘©‍πŸ’» ν™œλ™ & ν›„κΈ° (1)
      • 🍡 이야기 (2)
  • λΈ”λ‘œκ·Έ 메뉴

    • νƒœκ·Έ
  • 링크

    • github
    • velog
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    μ½”λ“œμž‡ μŠ€ν”„λ¦°νŠΈ
    λ°μ΄ν„°λ² μ΄μŠ€
    μ½”λ”©ν…ŒμŠ€νŠΈ
    λ„€νŠΈμ›Œν¬
    Spring
    GIT
    객체지ν–₯ν”„λ‘œκ·Έλž˜λ°
    기술 λ©΄μ ‘
    배포
    μ„œλ²„
    자료ꡬ쑰
    운영체제
    docker
    개발
    Java
    μœ„ν΄λ¦¬ 페이퍼
    μ•Œκ³ λ¦¬μ¦˜
    Spring Security
  • 졜근 λŒ“κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
μ†Œμ˜ πŸ€
[μ•Œκ³ λ¦¬μ¦˜] μ‹œκ°„ λ³΅μž‘λ„μ™€ 곡간 λ³΅μž‘λ„ + Big O ν‘œκΈ°λ²•
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”