μμ°¨νμ μκ³ λ¦¬μ¦μ νλ‘κ·Έλλ°μμ λ°μ΄ν°λ₯Ό μ°Ύλ κ°λ¨νμ§λ§ κ°λ ₯ν λ°©λ²μ λλ€. μ€λ ν¬μ€ν μμλ μμ°¨νμμ κΈ°λ³Έ κ°λ κ³Ό μ΄λ₯Ό νμ΄μ¬μΌλ‘ ꡬννλ λ°©λ²μ μκ°ν©λλ€. μ΄ κΈμ ν΅ν΄ μκ³ λ¦¬μ¦μ μ΄ν΄λλ₯Ό λμ΄κ³ , μ€μ μμ νμ©ν μ μλ μ€μ©μ μΈ μ½λλ₯Ό μ΅ν보μΈμ.
β£ λͺ©μ°¨
01. μμ°¨νμ μκ³ λ¦¬μ¦μ κΈ°λ³Έ κ°λ π
μμ°¨νμμ΄λ?
μμ°¨νμ(Sequential Search) μκ³ λ¦¬μ¦μ λ°μ΄ν° 리μ€νΈλ₯Ό μ²μλΆν° λκΉμ§ μμ°¨μ μΌλ‘ νμνμ¬ μνλ κ°μ μ°Ύλ λ°©λ²μ λλ€. μ΄ λ°©λ²μ λ°μ΄ν°κ° μ λ ¬λμ΄ μμ§ μμλ μ¬μ© κ°λ₯νλ©°, ꡬνμ΄ κ°λ¨ν©λλ€.
μμ°¨νμμ λμ μ리:
- 리μ€νΈμ 첫 λ²μ§Έ μμλΆν° μμλλ‘ μνλ κ°μ μ°Ύλλ€.
- μ°Ύμ κ°μ λ°κ²¬νλ©΄ κ²μμ μ’ λ£νλ€.
- 리μ€νΈμ λκΉμ§ κ²μν΄λ κ°μ μ°Ύμ§ λͺ»νλ©΄ κ°μ΄ μ‘΄μ¬νμ§ μλλ€κ³ νλ¨νλ€.
μμ :
리μ€νΈ [3, 5, 2, 9, 7]μμ κ° 9λ₯Ό μ°Ύλ κ²½μ°, 첫 λ²μ§Έ 3λΆν° μμλλ‘ λΉκ΅νμ¬ 9λ₯Ό μ°Ύμ λκΉμ§ κ³μ μ§νν©λλ€.
μκ° λ³΅μ‘λ:
μμ°¨νμμ μκ° λ³΅μ‘λλ νκ· μ μΌλ‘ O(n)μ λλ€. μ΄λ μ΅μ μ κ²½μ° λͺ¨λ μμλ₯Ό νμν΄μΌ ν μλ μκΈ° λλ¬Έμ λλ€.
02. νμ΄μ¬μΌλ‘ μμ°¨νμ ꡬννκΈ°π₯οΈ
κΈ°λ³Έ ꡬν:
μ΄μ μμ°¨νμ μκ³ λ¦¬μ¦μ νμ΄μ¬μΌλ‘ ꡬνν΄ λ³΄κ² μ΅λλ€. μλλ μμ°¨νμμ μννλ κ°λ¨ν νμ΄μ¬ μ½λμ λλ€.
def sequential_search(arr, target):
"""
μμ°¨νμ μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ target κ°μ arr 리μ€νΈμμ μ°Ύμ΅λλ€.
:param arr: νμν 리μ€νΈ (List[int])
:param target: μ°Ύκ³ μ νλ κ° (int)
:return: κ°μ΄ μ‘΄μ¬νλ©΄ μΈλ±μ€, κ·Έλ μ§ μμΌλ©΄ -1
"""
# 리μ€νΈμ κ° μμλ₯Ό μμ°¨μ μΌλ‘ νμν©λλ€.
for index, value in enumerate(arr):
# νμ¬ μμκ° μ°Ύκ³ μ νλ κ°κ³Ό μΌμΉνλμ§ νμΈν©λλ€.
if value == target:
# κ°μ΄ λ°κ²¬λλ©΄ ν΄λΉ μμμ μΈλ±μ€λ₯Ό λ°νν©λλ€.
return index
# 리μ€νΈμ λκΉμ§ νμνμΌλ κ°μ λ°κ²¬νμ§ λͺ»ν κ²½μ° -1μ λ°νν©λλ€.
return -1
# νμν 리μ€νΈμ μ°Ύκ³ μ νλ κ°μ μ μν©λλ€.
example_list = [3, 5, 2, 9, 7]
search_value = 9
# μμ°¨νμ ν¨μλ₯Ό νΈμΆνμ¬ κ°μ μ°Ύμ΅λλ€.
result = sequential_search(example_list, search_value)
# κ²μ κ²°κ³Όμ λ°λΌ λ©μμ§λ₯Ό μΆλ ₯ν©λλ€.
if result != -1:
# κ°μ΄ 리μ€νΈμ μ‘΄μ¬νλ κ²½μ°, ν΄λΉ μΈλ±μ€λ₯Ό μΆλ ₯ν©λλ€.
print(f"κ° {search_value}μ(λ) 리μ€νΈμ μΈλ±μ€ {result}μ μ‘΄μ¬ν©λλ€.")
else:
# κ°μ΄ 리μ€νΈμ μ‘΄μ¬νμ§ μλ κ²½μ°, μ‘΄μ¬νμ§ μμμ μΆλ ₯ν©λλ€.
print(f"κ° {search_value}μ(λ) 리μ€νΈμ μ‘΄μ¬νμ§ μμ΅λλ€.")
μ½λ μ€λͺ :
- sequential_search ν¨μλ 리μ€νΈμ μ°Ύκ³ μ νλ κ°μ μ λ ₯λ°μ 리μ€νΈλ₯Ό μμ°¨μ μΌλ‘ νμν©λλ€.
- κ°μ΄ λ°κ²¬λλ©΄ κ·Έ κ°μ μΈλ±μ€λ₯Ό λ°ννλ©°, 리μ€νΈμ λκΉμ§ κ²μν΄λ κ°μ μ°Ύμ§ λͺ»νλ©΄ -1μ λ°νν©λλ€.
ν μ€νΈ λ° κ²°κ³Ό:
μ μ½λλ₯Ό μ€ννλ©΄, 9κ° λ¦¬μ€νΈμ μΈλ±μ€ 3μ μ‘΄μ¬νλ€λ κ²°κ³Όκ° μΆλ ₯λ©λλ€. λ€μν μ λ ₯κ°μΌλ‘ μ½λλ₯Ό ν μ€νΈνμ¬ μκ³ λ¦¬μ¦μ μ νμ±μ νμΈν΄ 보μΈμ.
03. μμ°¨νμμ νμ© μ¬λ‘π
μ€μ λ¬Έμ ν΄κ²°:
μμ°¨νμμ μ λ ¬λμ§ μμ λ°μ΄ν°μμ κ°μ μ°Ύλ λ° μ μ©ν©λλ€. μλ₯Ό λ€μ΄, μ¬μ©μμ μ λ ₯μ κ²μνκ±°λ λ°μ΄ν°λ² μ΄μ€μμ κ°λ¨ν μ‘°ν μμ μ μνν λ μ μ©ν μ μμ΅λλ€.
λ€λ₯Έ μκ³ λ¦¬μ¦κ³Όμ λΉκ΅:
- μ΄μ§ νμ: μ λ ¬λ λ°μ΄ν°μμλ§ μ¬μ©ν μ μμΌλ©°, μκ° λ³΅μ‘λκ° O(log n)μΌλ‘ λ λΉ λ¦ λλ€.
- ν΄μ ν μ΄λΈ: λ°μ΄ν°μ κ²μ μλκ° μμ μκ°μ κ°κΉμ ν¨μ¬ λΉ λ¦ λλ€. νμ§λ§ ꡬνμ΄ λ³΅μ‘ν μ μμ΅λλ€.