[Hello Coding μκ³ λ¦¬μ¦] 1. μκ³ λ¦¬μ¦ μκ°
[Hello Coding] μκ³ λ¦¬μ¦ 1μ₯. μκ³ λ¦¬μ¦μ μκ°
μκ³ λ¦¬μ¦μ΄λ?
: μ΄λ€ μΌμνκΈ° μν λͺ
λ Ήμ μ§ν©.
νΉν λ€λ₯Έ μ½λλ³΄λ€ μλλ₯Ό λΉ λ₯΄κ² νκ±°λ, λ¬Έμ λ₯Ό νκΈ° μν κ².
μκ³ λ¦¬μ¦μ μ±λ₯
- μ¬λ¬ μκ³ λ¦¬μ¦λ€μ μ₯λ¨μ κ³Ό μ°¨μ΄μ μ μμμΌ νλ€.
- λ¨μν λ€λ₯Έ μλ£κ΅¬μ‘°/μκ³ λ¦¬μ¦μ μ¬μ©νλ κ²λ§μΌλ‘λ μ±λ₯μ΄ ν¬κ² λ¬λΌμ§λ€.
μ΄μ§ νμ
νμ λ¬Έμ Search
: μ£Όμ΄μ§ λ°μ΄ν°μμ μνλ νλͺ©μ μ΄λ€ λ°©λ²μΌλ‘ μ°Ύμ κ²μΈκ°.
μ) 1λΆν° 100κΉμ§μ μ«μλ€ μ€ '78'μ΄λΌλ μ«μ μ°ΎκΈ°
λ¨μ νμ Simple search
: μ²μλΆν° νλμ© μμλλ‘ νλͺ©μ νμ
μ) 1, 2, 3, 4, ... 77, 78 μμΌλ‘ νμν΄ 78μ μ°Ύλλ€.
- Nκ°μ μμλ₯Ό κ°μ§ 리μ€νΈμμ μ΅λ Nλ² λ§μ λ΅μ μ°Ύμ μ μλ€.
μ΄μ§ νμ Binary search
- μ λ ¬λ μμ 리μ€νΈμμ,
- μνλ μμκ° μμΌλ©΄ κ·Έ μμμ μΈλ±μ€λ₯Ό λ°ν / μμΌλ©΄ nullμ λ°ν.
- Nκ°μ μμλ₯Ό κ°μ§ 리μ€νΈμμ μ΅λ
log2 N
λ² λ§μ λ΅μ μ°Ύμ μ μλ€.
μ΄μ§ νμμ λμμ리
: 리μ€νΈμ μ€κ° κ°μ κΈ°μ€μΌλ‘ μ€κ° κ°λ³΄λ€ ν°μ§/μμμ§/κ°μμ§ νλ¨ν΄, λ²μλ₯Ό μ€μ¬κ°λ©΄μ λ°λ³΅ νμνλ€.
μμ)
1λΆν° 100κΉμ§μ μ«μλ€ μ€ 57μ μΈλ±μ€ μ°ΎκΈ°
- 50μ΄λΌλ μ€κ°κ°λ³΄λ€ ν°μ§ μμμ§ νλ¨ -> ν¬λ€.
- 1-50μ λ²μμμ μ μΈν λ€μ, 51-100 μ μ€κ°μΈ 75λ³΄λ€ ν°μ§ μμμ§ νλ¨νλ€. -> μλ€.
- 75-100μ λ²μμμ μ μΈν λ€μ, 51-74 μ μ€κ°μΈ 63λ³΄λ€ ν°μ§ μμμ§ νλ¨νλ€.
- ... λ₯Ό λ°λ³΅ν΄ λ΅μ μ°Ύλλ€.
1-100 μ€ μ΄λ€ μ«μλΌλ μ΅λ 7λ² λ§μ μ°Ύμ μ μλ€.
μ€ν μκ° running time
μ°λ¦¬λ μκ°μ΄λ μ μ₯곡κ°μ μ μ½ν΄ μ£Όλ κ°μ₯ ν¨μ¨μ μΈ μκ³ λ¦¬μ¦μ μ°Ύκ³ μΆμ΄ νλ€.
μ ν μκ° linear time
: λ¨μνμκ³Ό κ°μ΄, Nκ° μ€μμ μ°Ύμ λ μ΅λ Nλ² λ§μ μ°Ύμ μ μλ κ²½μ° μ ν μκ°μΌλ‘ μ€νλλ€κ³ νλ€.
λ‘κ·Έ μκ° logarithmic time
: μ΄μ§νμκ³Ό κ°μ΄, Nκ° μ€μμ μ°Ύμ λ μ΅λlog2 N
λ² λ§μ μ°Ύμ μ μλ κ²½μ° λ‘κ·Έ μκ°μΌλ‘ μ€νλλ€κ³ νλ€.
λΉ μ€ νκΈ°λ² Big O notation
: μκ³ λ¦¬μ¦μ΄ μΌλ§λ λΉ λ₯Έμ§ λνλ΄λ νκΈ°λ²μ΄λ€.
- μκ³ λ¦¬μ¦μ μλλ₯Ό μκ°μ΄ μλ μ°μ°νμκ° μ΄λ»κ² μ¦κ°νλμ§λ‘ μΈ‘μ νλ€.
μ¦ μκ³ λ¦¬μ¦μ΄ λμνκΈ° μν΄ νμν μ΅λ μ°μ° νμλ₯Ό λνλΈλ€. - λΉ
μ€ νκΈ°λ²μ μ΅μ
μ κ²½μ°λ₯Ό λνλΈλ€.
λ¨μνμμ κ²½μ°) μ무리 λλ €μ ΈλO(n)
λ³΄λ€ λλ €μ§μ§ μμμ μλ―Ένλ€.
μλ₯Ό λ€μ΄..
리μ€νΈ ν¬κΈ°κ° nμΌ λ μ΄λ€ μμλ₯Ό μ°ΎμΌλ €λ©΄
λ¨μ νμ
: nλ² μ°μ°ν΄μΌ νλ€ -O(n)
λ§νΌ κ±Έλ¦°λ€κ³ νκΈ°νλ€.
(O(n)
: nμ΄λΌλ κ²°κ³Όλ₯Ό μν΄ nλ² μ°μ°ν΄μΌ ν¨μ μλ―Έ)μ΄μ§ νμ
: log2 nλ² μ°μ°ν΄μΌ νλ€ -O(log n)
λ§νΌ κ±Έλ¦°λ€κ³ νκΈ°νλ€.
(O(log n)
: nμ΄λΌλ κ²°κ³Όλ₯Ό μν΄log2 n
λ² μ°μ°ν΄μΌ ν¨μ μλ―Έ)
λΉ μ€ νκΈ°λ²μμ logλ..
λΉ
μ€ νκΈ°λ²μ λνλ λͺ¨λ log
ν¨μλ log2
(λ°μ΄ 2μΈ λ‘κ·Έ)λ₯Ό λ»νλ€.
λ§μ΄ μ¬μ©νλ λΉ μ€ μ€νμκ°
λ§μ΄ μ¬μ©νλ λΉ μ€ μ€νμκ°μ λ€μ― κ°λ§ μμλ³Έλ€.
O(log n)
, λ‘κ·Έ μκ°
: λ€μ― κ° μ€ κ°μ₯ λΉ λ₯΄λ€.
μ΄μ§ νμκ³Ό κ°μ κ²½μ°.O(n)
, μ ν μκ°
: λ€μ― κ° μ€ λ λ²μ§Έλ‘ λΉ λ₯΄λ€.
λ¨μ νμκ³Ό κ°μ κ²½μ°.O(n * log n)
: λ€μ― κ° μ€ μΈ λ²μ§Έλ‘ λΉ λ₯΄λ€.
ν΅ μ λ ¬κ³Ό κ°μ κ²½μ°.O(n2)
(nμ κ³±)
: λ€μ― κ° μ€ λ€ λ²μ§Έλ‘ λΉ λ₯΄λ€.
μ ν μ λ ¬κ³Ό κ°μ κ²½μ°.O(n!)
(nν©ν 리μΌ)
: λ€μ― κ° μ€ λ€μ― λ²μ§Έλ‘ λΉ λ₯΄λ€ (κ°μ₯ λ리λ€).
μΈνμ λ¬Έμ μ κ°μ κ²½μ°.