π μ λ ¬κ³Ό νμ μκ³ λ¦¬μ¦ μμ μ 볡! (with Python)
π μ λ ¬κ³Ό νμ μκ³ λ¦¬μ¦ μμ μ 볡! (Python κΈ°λ°)
νλ‘κ·Έλλ°μμ μμ£Ό μ°μ΄λ μ λ ¬(Sort) κ³Ό νμ(Search) μκ³ λ¦¬μ¦!
Pythonμμλ μ΄λ€μ μ΄λ»κ² ꡬννκ³ νμ©ν μ μμκΉμ?
μ΄λ² ν¬μ€ν
μμλ μ ν νμκ³Ό μ΄μ§ νμ, κ·Έλ¦¬κ³ μ λ ¬ ν¨μμ λν΄ μ°¨κ·Όμ°¨κ·Ό μμλ³΄κ² μ΅λλ€.
π μ λ ¬ (Sorting)
β μ λ ¬μ΄λ?
λ°°μ΄/리μ€νΈ μμ μλ μμλ€μ νΉμ κΈ°μ€μ λ°λΌ μμλλ‘ λμ΄νλ κ²
μμ:
L = [3, 8, 2, 7, 6, 10, 9]
# μ λ ¬ κ²°κ³Ό → [2, 3, 6, 7, 8, 9, 10]
β Pythonμ μ λ ¬ λ°©λ² 2κ°μ§
1. sorted() ν¨μ
- μλ‘μ΄ μ λ ¬λ 리μ€νΈλ₯Ό λ°ν (μλ³Έ 리μ€νΈλ κ·Έλλ‘ μ μ§)
L = [3, 8, 2, 7, 6, 10, 9]
L2 = sorted(L)
print(L2) # [2, 3, 6, 7, 8, 9, 10]
2. .sort() λ©μλ
- 리μ€νΈ μ체λ₯Ό μ λ ¬
L.sort()
print(L) # [2, 3, 6, 7, 8, 9, 10]
π λ΄λ¦Όμ°¨μ μ λ ¬
L.sort(reverse=True)
# λλ
sorted(L, reverse=True)
π λ¬Έμμ΄ λ¦¬μ€νΈ μ λ ¬
L = ['abcd', 'xyz', 'spam']
sorted(L)
# κ²°κ³Ό: ['abcd', 'spam', 'xyz'] # μ¬μ μ
# λ¬Έμμ΄ κΈΈμ΄ μ μ λ ¬
sorted(L, key=lambda x: len(x))
# κ²°κ³Ό: ['xyz', 'spam', 'abcd']
π νμ (Searching)
β μ ν νμ (Linear Search)
리μ€νΈμ μ²μλΆν° λκΉμ§ νλμ© μμλλ‘ λΉκ΅
def linear_search(L, x):
i = 0
while i < len(L) and L[i] != x:
i += 1
return i if i < len(L) else -1
- μκ° λ³΅μ‘λ: O(n)
- 리μ€νΈκ° μ λ ¬λμ΄ μμ§ μμλ μ¬μ© κ°λ₯
β μ΄μ§ νμ (Binary Search)
리μ€νΈκ° μ λ ¬λμ΄ μμ΄μΌλ§ μ¬μ© κ°λ₯
μ λ°μ© λλμ΄ λΉκ΅νλ λ°©μμΌλ‘ λ§€μ° λΉ λ₯΄κ² νμ
π‘ μκ° λ³΅μ‘λ: O(log n)
π μμ λ¬Έμ
리μ€νΈ L κ³Ό, κ·Έ μμμ μ°ΎμΌλ €λ μμ x κ° μΈμλ‘ μ£Όμ΄μ§ λ,
x μ κ°μ κ°μ κ°μ§λ μμμ μΈλ±μ€λ₯Ό 리ν΄νλ ν¨μ solution() μ μμ±νμΈμ.
L μ μ€λ¦μ°¨μμΌλ‘ μ λ ¬λμ΄ μκ³ , λμΌν μμλ ν λ²λ§ λ±μ₯ν©λλ€.
β μ΄μ§ νμ ꡬν μ½λ
def solution(L, x):
lower = 0
upper = len(L) - 1
while lower <= upper:
middle = (lower + upper) // 2
if L[middle] == x:
return middle
elif L[middle] < x:
lower = middle + 1
else:
upper = middle - 1
return -1
π μμ ν μ€νΈ
L = [2, 3, 5, 6, 9, 11, 15]
print(solution(L, 6)) # κ²°κ³Ό: 3
print(solution(L, 4)) # κ²°κ³Ό: -1
β λ§λ¬΄λ¦¬ μμ½
μκ³ λ¦¬μ¦ μ‘°κ±΄ μκ° λ³΅μ‘λ νΉμ§
μ ν νμ | μ λ ¬ X | O(n) | λ¨μ, λλ¦Ό |
μ΄μ§ νμ | μ λ ¬ O (μ€λ¦μ°¨μ) | O(log n) | λΉ λ¦, μ€κ°κ° λΉκ΅ λ°λ³΅ |
μ λ ¬ (sort) | 리μ€νΈ μ체 λ³κ²½ | O(n log n) | .sort() μ¬μ© |
μ λ ¬ (sorted) | μ 리μ€νΈ λ°ν | O(n log n) | sorted() μ¬μ© |
#νμ΄μ¬ #Python #μκ³ λ¦¬μ¦ #μ λ ¬ #μ΄μ§νμ #μ ννμ
#μ½λ©ν
μ€νΈ #μλ£κ΅¬μ‘° #κ°λ°μμ§λ§μ #μ½λ©κΈ°μ΄
#νλ‘κ·Έλλ°κΈ°μ΄ #PythonList #ITλΈλ‘κ·Έ #곡λΆκΈ°λ‘