μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- SwiftUI Tutorials
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- 0μ΄λμ΄μλκΈΈ
- discardableResult
- λμ κ³νλ²
- URLSession
- Til
- algorithm
- APPJAM
- GroupBy
- BFS
- dfs
- IOS
- SOPT
- κ³ λμ kit
- HAVIT
- SQL
- κΈ°μ΄λ¬Έλ²
- Swift
- algoritm
- μ΄μ§νμ
- SwiftUI νν 리μΌ
- duno
- binarySearch
- concurrency
- DynamicProgramming
- GCD
- μ°μνμ€λΆλΆμμ΄μν©
- νλ‘κ·Έλλ¨Έμ€
- SwiftUI
- Today
- Total
suvera-dev π₯¦
Algorithm) Binary Search λ³Έλ¬Έ
μ΄μ§νμμ λ€μ΄κ°κΈ°μ
κ°μ₯ κΈ°λ³Έ νμ λ°©λ²μΈ μμ°¨ νμμ λν΄μ
μ΄μ§ λ€λ£¨κ³ κ°λ³΄μ !
μμ°¨νμ(Sequential Search)μ΄λ ?
리μ€νΈ μμ μλ νΉμ ν λ°μ΄ν°λ₯Ό μ°ΎκΈ° μν΄ μμμλΆν°
λ°μ΄ν°λ₯Ό νλμ© μ°¨λ‘λλ‘ νμΈνλ λ°©λ²
- 리μ€νΈμ νΉμ κ°μ μμκ° μλμ§ μ²΄ν¬
- 리μ€νΈ μλ£νμμ νΉμ ν κ°μ κ°μ§λ μμμ κ°μλ₯Ό μΈλ
count() λ©μλμ λ΄λΆμμμ μμ°¨νμ
# μμ°¨νμ μμ€μ½λ
def sequential_search(n, target, array):
# κ° μμλ₯Ό νλμ© νμΈνλ©°
for i in range(n):
# νμ¬μ μμκ° μ°Ύκ³ μνλ μμμ λμΌν κ²½μ°
if array[i] == target:
return i + 1 # νμ¬μ μμΉ λ°ν . μΈλ±μ€λ 0λΆν° μμνλκΉ 1λνκΈ°
print("μμ±ν μΈμ κ°μλ₯Ό μ
λ ₯ν λ€μ νμΉΈλκ³ μ°Ύμ λ¬Έμμ΄ μ
λ ₯")
input_data = input().split()
n = int(input_data[0])
target = input_data[1]
print("μμ μ μ μμ κ°μλ§νΌ λ¬Έμμ΄ μ
λ ₯ . ꡬλΆμ λμ΄μ°κΈ° νμΉΈ")
array = input().split()
# μμ°¨νμ μν κ²°κ³Ό μΆλ ₯
print(sequential_search(n, target, array))
λ³Έλ‘ μΈ μ΄μ§νμ μμ -!
μ΄μ§νμ : λ°μΌλ‘ μͺΌκ°λ©΄μ νμνκΈ°
λ°°μ΄ λ΄λΆμ λ°μ΄ν°κ° μ λ ¬λμ΄ μμ΄μΌλ§ μ¬μ©ν μ μλ€.
νμ λ²μλ₯Ό μ λ°μ© μ’νκ°λ©° λ°μ΄ν°λ₯Ό νμνλ€!
μ΄μ§νμμ μμΉλ₯Ό λνλ΄λ λ³μ 3κ°λ₯Ό μ¬μ©νλλ°
νμνκ³ μνλ λ²μμ μμμ , λμ , κ·Έλ¦¬κ³ μ€κ°μ μ΄λ€.
μ°ΎμΌλ €λ λ°μ΄ν°μ μ€κ°μ μμΉμ μλ λ°μ΄ν°λ₯Ό λ°λ³΅μ μΌλ‘
λΉκ΅ν΄μ μνλ λ°μ΄ν°λ₯Ό μ°Ύμ !
μλ₯Ό λ€μ΄,
0 2 4 6 8 10 12 14 15 18
=> μ¬κΈ°μ μμμ μ 0, λμ μ 18, μ€κ°μ μ [4.5] μμΉμμ
μμ«μ μ리λ₯Ό λ²λ¦° [4] μμΉμ 8μ΄ λλ€ !
μ°ΎμΌλ €κ³ νλ λ°μ΄ν°κ° 4μΌλ μ€κ°μ μΈ 8λ³΄λ€ μμΌλ―λ‘ ,
8 μ΄νμ κ°μ νμΈν νμκ° μλ€.
λ€μ, μμμ μ 0 λμ μ 6 μ€κ°μ μ
[1.5] -> [1] μΈ 2κ° λλ€.
μ€κ°μ μΈ 2λ³΄λ€ 4κ° ν¬λ―λ‘, 2 μ΄νμ κ°μ νμΈν νμκ° μλ€.
λ€μ, μμμ μ 4 λμ μ 6μ΄ λλ€.
μ€κ°μ μ΄ μ°ΎμΌλ €λ λ°μ΄ν°μ λμΌνλ―λ‘ νμμ μ’ λ£νλ€ !
μ΄λ κ² μ 체 λ°μ΄ν°μ κ°μλ 10κ° μ§λ§, μ΄μ§νμμ μ΄μ©ν΄
μ΄ 3λ²μ μ°ΈμμΌλ‘ μμλ₯Ό μ°Ύμλ€. μκ°λ³΅μ‘λλ O(logN)μ΄ λλ€.
μ΄μ§νμ μκ³ λ¦¬μ¦μ ν λ¨κ³λ₯Ό κ±°μΉ λλ§λ€ νμΈνλ μμκ° νκ· μ μΌλ‘
μ λ°μΌλ‘ μ€μ΄λ λ€.
ꡬννλ λ°©λ²μ 2κ°μ§κ° μλ€ !
1. μ¬κ·ν¨μλ₯Ό μ΄μ©νλ λ°©λ²
2. λ¨μνκ² λ°λ³΅λ¬Έμ μ΄μ©νλ λ°©λ²
1. μ¬κ·ν¨μλ₯Ό μ΄μ©νλ λ°©λ²
# μ΄μ§νμ - μ¬κ·μ
def binary_search(array, target, start, end):
if start > end:
return None
mid = (start + end) // 2
# μ°Ύμ κ²½μ° μ€κ°μ μΈλ±μ€ λ°ν
if array[mid] == target:
return mid
# μ€κ°κ°λ³΄λ€ μ°Ύκ³ μ νλ κ°μ΄ μμ κ²½μ° μΌμͺ½ νμΈ
elif array[mid] > target:
return binary_search(array, target, start, mid-1)
# μ€κ°κ°λ³΄λ€ μ°Ύκ³ μ νλ κ°μ΄ ν° κ²½μ° μ€λ₯Έμͺ½ νκΈ΄
else:
return binary_search(array, target, mid+1, end)
n, target = map(int, input().split())
array = list(map(int, input().split()))
result = binary_search(array, target, 0, n-1)
if result == None:
print("μμκ° μ‘΄μ¬νμ§ μμ΅λλ€.")
else:
print(result + 1)
2. λ¨μνκ² λ°λ³΅λ¬Έμ μ΄μ©νλ λ°©λ²
# μ΄μ§νμ μμ€μ½λ - λ°λ³΅λ¬Έ
def binary_search(array, target, start, end):
while start <= end:
mid = (start + end) // 2
# μ°Ύμ κ²½μ° μ€κ°μΈλ±μ€
if array[mid] == target:
return mid
# μ€κ°λ³΄λ€ μμ κ²½μ° μΌμͺ½
elif array[mid] > target:
end = mid -1
# μ€κ°λ³΄λ€ ν° κ²½μ° μ€λ₯Έμͺ½
else:
start = mid + 1
return None
n, target = map(int, input().split())
array = list(map(int, input().split()))
result = binary_search(array, target, 0, n-1)
if result == None:
print("μμκ° μ‘΄μ¬νμ§ μμ΅λλ€.")
else:
print(result + 1)
μ½λ©ν μ€νΈμμ μ΄μ§νμμ λ¨κ³¨ λ¬Έμ !
κ°κΈμ μΈμ°μ
νΈλ¦¬ μλ£κ΅¬μ‘° πΏ
λ Έλμ λ Έλμ μ°κ²°λ‘ νννλ©° μ¬κΈ°μμ λ Έλλ
μ 보μ λ¨μλ‘μ μ΄λ ν μ 보λ₯Ό κ°μ§κ³ μλ κ°μ²΄λ‘ μ΄ν΄ν μ μλ€.
λ°μ΄ν°λ² μ΄μ€ μμ€ν μ΄λ νμΌμμ€ν κ³Ό κ°μ κ³³μμ λ§μ μμ
λ°μ΄ν°λ₯Ό κ΄λ¦¬νκΈ° μν λͺ©μ μΌλ‘ μ¬μ©νλ€.
- νΈλ¦¬λ λΆλͺ¨λ Έλμ μμλ Έλμ κ΄κ³λ‘ ννλλ€
- νΈλ¦¬μ μ΅μλ¨ λ Έλλ₯Ό λ£¨νΈ λ ΈλλΌκ³ νλ€
- νΈλ¦¬μ μ΅νλ¨ λ Έλλ₯Ό λ¨λ§ λ ΈλλΌκ³ νλ€
- νΈλ¦¬μμ μΌλΆλ₯Ό λ΄μ΄λ΄λ νΈλ¦¬κ΅¬μ‘°μ΄λ©° μ΄λ₯Ό μλΈνΈλ¦¬λΌκ³ νλ€
- νΈλ¦¬λ νμΌ μμ€ν κ³Ό κ°μ΄ κ³μΈ΅μ μ΄κ³
μ λ ¬λ λ°μ΄ν°λ₯Ό λ€λ£¨κΈ°μ μ ν©νλ€
μ΄μ§ νμ νΈλ¦¬ π₯
νΈλ¦¬μλ£κ΅¬μ‘° μ€μμ κ°μ₯ κ°λ¨ν ννκ° μ΄μ§ νμ νΈλ¦¬μ΄λ€.
μ΄μ§ νμ νΈλ¦¬λ μ΄μ§ νμμ΄ λμν μ μλλ‘ κ³ μλ
ν¨μ¨μ μΈ νμμ΄ κ°λ₯ν μλ£κ΅¬μ‘°μ΄λ€.
- λΆλͺ¨λ Έλλ³΄λ€ μΌμͺ½ μμ λ Έλκ° μλ€
- λΆλͺ¨λ Έλλ³΄λ€ μ€λ₯Έμͺ½ μμ λ Έλκ° ν¬λ€
μΌμͺ½ μμλ Έλ < λΆλͺ¨ λ Έλ < μ€λ₯Έμͺ½ μμ λ Έλ
λΉ λ₯΄κ² μ λ ₯λ°κΈ° π
μ΄μ§νμ λ¬Έμ λ μ λ ₯ λ°μ΄ν°κ° λ§κ±°λ , νμ λ²μκ° λ§€μ°λμ νΈ !
μ΄λ κ² μ λ ₯ λ°μ΄ν°μ κ°μκ° λ§μ λ¬Έμ μ input() ν¨μλ₯Ό μ¬μ©νλ©° λμ μλκ° λλ €μ
μκ°μ΄κ³Όλ‘ μ€λ΅ νμ μ λ°μ μ μλ€ !
μ λ ₯λ°μ΄ν°κ° λ§μ λ¬Έμ λ sys λΌμ΄λΈλ¬μ readline() ν¨μλ₯Ό μ΄μ©νμ !
import sys
# νλμ λ¬Έμμ΄ λ°μ΄ν° μ
λ ₯λ°κΈ°
input_data = sys.stdin.readline().rstrip()
print(input_data)
sys λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν λ
νμ€ μ λ ₯λ°κ³ λμ rstrip() ν¨μλ₯Ό κΌ νΈμΆν΄μΌνλ€
readline() μΌλ‘ μ λ ₯νλ©° μ λ ₯ν μν°κ° μ€λ°κΏ κΈ°νΈλ‘ μ λ ₯λλλ°,
μ΄ κ³΅λ°± λ¬Έμλ₯Ό μ κ±°νκΈ° μν΄μλ€ !
κΉνμ μ 리ν΄λμ input !
'Algorithm > CodingTest - Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Algorithm) Dynamic programming (0) | 2022.04.09 |
---|---|
Algorithm ) Binary Search λ¬Έμ (0) | 2022.04.07 |
Algorithm) Sorting κΈ°λ³Έλ¬Έμ (0) | 2022.04.07 |
Algorithm) Sorting (0) | 2022.04.03 |
Algorithm) DFS/BFS μ€μ λ¬Έμ (0) | 2022.04.02 |