λΉ λ₯΄κ³ ν¨μ¨μ μΈ κ²μ λ°©λ², μ΄μ§ κ²μ(Binary Search)
μ΄μ§ κ²μ(Binary Search)μ λ°μ΄ν°λ₯Ό μ λ°μΌλ‘ λλμ΄κ°λ©° κ²μνλ ν¨μ¨μ μΈ κ²μ μκ³ λ¦¬μ¦μ λλ€.
μ΄λ² μμ μμλ μ΄μ§ κ²μ μκ³ λ¦¬μ¦μ κ°λ κ³Ό νμ΄μ¬μΌλ‘ μκ³ λ¦¬μ¦μ ꡬννλ λ°©λ²μ μμλ³΄κ² μ΅λλ€.
μ΄μ§ κ²μμ΄λ 무μμΈκ°μ?
μ΄μ§ κ²μμ μ λ ¬λ 리μ€νΈμμλ§ μ¬μ©ν μ μλ κ²μ μκ³ λ¦¬μ¦μ λλ€.
λ¨Όμ 리μ€νΈμ μ€κ°μ μμΉν κ°μ νμΈνκ³ , μ΄ κ°μ΄ μ°Ύκ³ μ νλ κ°κ³Ό κ°λ€λ©΄ κ²μμ΄ μλ£λ©λλ€.
λ§μ½ μ°Ύκ³ μ νλ κ°μ΄ λ μλ€λ©΄ 리μ€νΈμ μΌμͺ½ μ λ°
λ§μ, λ ν¬λ€λ©΄ μ€λ₯Έμͺ½ μ λ°
λ§μ λ€μ νμν©λλ€.
μ΄λ¬ν κ³Όμ μ λ°λ³΅νμ¬ κ²μνλ €λ κ°μ μ°Ύμ λκΉμ§ 리μ€νΈλ₯Ό μ λ°μ© μ€μ¬λκ°λλ€.
μ΄μ§ κ²μμ μ₯μ
μ΄μ§ κ²μμ κ°μ₯ ν° μ₯μ μ κ²μ λ²μκ° λ§€ λ¨κ³λ§λ€ μ λ°μΌλ‘ μ€μ΄λ€κΈ° λλ¬Έμ, κ²μ μλκ° λ§€μ° λΉ λ₯΄λ€λ μ μ λλ€.
μλ₯Ό λ€μ΄ 1000κ°μ λ°μ΄ν°κ° μμ λ, λ¨μν 첫λ²μ§ΈλΆν° λ§μ§λ§κΉμ§ μ°¨λ‘λλ‘ κ²μνλ μ ν κ²μμ μ΅λ 1000λ²
μ λΉκ΅κ° νμν©λλ€.
νμ§λ§ μ΄μ§ κ²μμ μ΅λ 10λ²
μ λΉκ΅λ§μΌλ‘λ κ°μ μ°Ύμ μ μμ΅λλ€.
μ΄μ§ κ²μμ νμ΄μ¬μΌλ‘ ꡬννκΈ°
μ΄μ νμ΄μ¬μΌλ‘ μ΄μ§ κ²μμ μ΄λ»κ² ꡬνν μ μλμ§ μ΄ν΄λ³΄κ² μ΅λλ€.
μλ μ½λλ μ΄μ§ κ²μ μκ³ λ¦¬μ¦μ κΈ°λ³Έμ μΈ κ΅¬νμ 보μ¬μ€λλ€.
def binary_search(arr, target): # κ²μ λ²μμ μμκ³Ό λ μΈλ±μ€ left, right = 0, len(arr) - 1 # κ²μ λ²μκ° μ’νμ§ λκΉμ§ λ°λ³΅ while left <= right: # μ€κ° μΈλ±μ€ κ³μ° mid = (left + right) // 2 # μ€κ° κ° νμΈ mid_value = arr[mid] # μ€κ° κ°μ΄ λͺ©ν κ°κ³Ό μΌμΉνλ κ²½μ° if mid_value == target: # μΈλ±μ€ λ°ν return mid # μ€κ° κ°μ΄ λͺ©ν κ°λ³΄λ€ μμ κ²½μ° elif mid_value < target: # μ€λ₯Έμͺ½ μ λ°μ νμ left = mid + 1 # μ€κ° κ°μ΄ λͺ©ν κ°λ³΄λ€ ν° κ²½μ° else: # μΌμͺ½ μ λ°μ νμ right = mid - 1 return -1 # κ°μ μ°Ύμ§ λͺ»ν κ²½μ° # μ λ ¬λ 리μ€νΈ numbers = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19] # μ΄μ§ κ²μμΌλ‘ 7 μ°ΎκΈ° result = binary_search(numbers, 7) # 3 μΆλ ₯ (μΈλ±μ€ 3 μμΉμ κ° 7μ΄ μμ) print(f"μ°Ύλ κ°μ μΈλ±μ€: {result}")
μ½λ μ€λͺ
-
left
μright
: 리μ€νΈμ κ²μ λ²μλ₯Ό μ§μ νλ λ³μμ λλ€. μ²μμλ 리μ€νΈμ μμ(0)κ³Ό λ(len(arr) - 1)μ κ°λ¦¬ν΅λλ€. -
mid
: κ²μ λ²μμ μ€κ° μΈλ±μ€λ₯Ό κ³μ°ν©λλ€.(left + right) // 2
λ μ€κ° κ°μ ꡬνλ μ½λμ λλ€. -
mid_value
: μ€κ° μΈλ±μ€μ μμΉν κ°μ μλ―Έν©λλ€. μ΄ κ°μ λͺ©ν κ°(target
)κ³Ό λΉκ΅ν©λλ€. -
left = mid + 1
: λͺ©ν κ°μ΄ μ€κ° κ°λ³΄λ€ ν¬λ€λ©΄, κ²μ λ²μλ₯Ό μ€λ₯Έμͺ½ μ λ°μΌλ‘ μ’νλλ€. -
right = mid - 1
: λͺ©ν κ°μ΄ μ€κ° κ°λ³΄λ€ μλ€λ©΄, κ²μ λ²μλ₯Ό μΌμͺ½ μ λ°μΌλ‘ μ’νλλ€. -
return -1
: λ§μ½ κ°μ μ°Ύμ§ λͺ»ν κ²½μ°,-1
μ λ°ννμ¬ κ²μ μ€ν¨λ₯Ό μ립λλ€.
μ΄μ§ κ²μ μκ³ λ¦¬μ¦μ μ£Όμ νΉμ§μ 무μμΈκ°μ?
Guidelines
AI Tutor
Publish
Design
Upload
Notes
Favorites
Help
Code Editor
Execution Result