π μ΄μ 컀리νλΌ μ€ νμ΅μ νλ μκ°μμ λ¨μ κ²μ μκ³ λ¦¬μ¦ λ°μ λ¨μ§ μμλ€. λ€μν λ΄μ©μ νμ΅νκ³ λ°°μ°λ©΄μ λμ μ€λ ₯μ λν΄μ κΉ¨λ¬μλ μκ°μ΄μκ³ λ§μ κ²μ λ°°μμΌλ‘ λμ μλμ μ±μ₯μν¬ μ μλ κ³κΈ°κ° λμλ€. λ¨μ μκ³ λ¦¬μ¦ νμ΅κΉμ§ λλ§μΉκ³ νλ‘μ νΈμ λ€μ΄κ° λ νμλ€κ³Ό μνν νμ μ ν΅ν΄ μ’μ κ²°κ³Όλ₯Ό λ³μ μ μλλ‘ ν΄λ³΄μ!!
π μ€λ νμ΅ν λ΄μ©
μκ³ λ¦¬μ¦
- λ¬Έμ λ₯Ό ν΄κ²°νλ μ΅μ μ μ ν
- μ΄λ€ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μ μΌλ ¨μ μ μ°¨λ₯Ό μ μνκ³ , 곡μνν ννλ‘ ννν μΌμ’ μ λ¬Έμ μ νμ΄ λ°©λ²μ μλ―Ένλ€.
μκ³ λ¦¬μ¦μ λͺ μ 쑰건
- μ λ ₯: μΆλ ₯μ νμν μλ£λ₯Ό μ λ ₯λ°μ μ μμ΄μΌνλ€. κΌ μ λ ₯μ λ°μ§ μμλ λλ μκ³ λ¦¬μ¦λ μλ€.
- μΆλ ₯: μ€νμ΄ λλ©΄ μ μ΄λ ν κ°μ§ μ΄μμ κ²°κ³Όλ₯Ό λ°λμ μΆλ ₯ν΄μΌνλ€.
- μ νμ±: μ νν λͺ λ Ήμ΄λ₯Ό μνν ν, μ νν μκ° λ΄μ μ’ λ£ν΄μΌ νλ€.
- λͺ νμ±: κ° λ¨κ³λ λ¨μνκ³ λͺ νν΄μΌ νλ©°, λͺ¨νΈν΄μλ μλλ€.
- ν¨μ¨μ±: κ°λ₯ν ν ν¨μ¨μ μ΄μ΄μΌ νλ€. λͺ¨λ κ³Όμ μ΄ λͺ λ°±νκ² μ€ν κ°λ₯ν΄μΌ νλ©°, μ€ν κ°λ₯μ±μ΄ λ¨μ΄μ§λ μκ³ λ¦¬μ¦μ ν¨μ¨μ μ΄μ§ λͺ»ν μκ³ λ¦¬μ¦μ΄λΌ λ³Ό μ μλ€.
μκ° λ³΅μ‘λ
μ λ ₯κ°μ λ³νμ λ°λΌ μ°μ°μ μνν λ , μ°μ° νμμ λΉν΄ 걸리λ μκ°
- μκ° λ³΅μ‘λ νκΈ° λ°©λ²
- Big-O(λΉ
-μ€)
- κ°μ₯ μμ£Ό μ¬μ©λλ νκΈ°λ²
- μ΅μ μ κ²½μ°λ₯Ό κ³ λ €νμ¬ νλ‘κ·Έλ¨μ΄ μ€νλλ κ³Όμ μμ μμλλ μ΅μ μ μκ°κΉμ§ κ³ λ €ν μ μλ€.
- Big-Ω(λΉ -μ€λ©κ°)
- Big-θ(λΉ -μΈν)
- Big-O(λΉ
-μ€)
Big-O νκΈ°λ²μ μ’ λ₯
- O(1): Constant complexity
- μ λ ₯κ°μ΄ μ¦κ°νλλΌλ μκ°μ΄ λμ΄λμ§ μλλ€.
- μ λ ₯κ°μ ν¬κΈ°μ κ΄κ³μμ΄ μ¦μ μΆλ ₯κ°μ μ»μ΄λΌ μ μλ€.
- O(n): linear complexity
- μ λ ₯κ°μ΄ μ¦κ°ν¨μ λ°λΌ μκ° λν κ°μ λΉμ¨λ‘ μ¦κ°νλ κ²μ μλ―Ένλ€. (1μ€ forλ¬Έ)
- O(log n): logarithmic complexity
- O(1) λ€μμΌλ‘ λΉ λ₯Έ μκ° λ³΅μ‘λμ΄λ€.
- Binary Search Treeμ κ°μ μ΄λν λλ§λ€ κ²½μ°μ μκ° μ λ°μΌλ‘ μ€μ΄λλ ꡬ쑰μ μκ³ λ¦¬μ¦μ΄λ€.
- O(n2): quadratic complexity
- μ λ ₯κ°μ΄ μ¦κ°ν¨μ λ°λΌ μκ°μ΄ nμ μ κ³±μμ λΉμ¨λ‘ μ¦κ°νλ κ²μ μλ―Ένλ€. (2μ€ forλ¬Έμ΄μ)
- O(2^n): exponential complexity
- Big-O νκΈ°λ² μ€ κ°μ₯ λλ¦° μκ° λ³΅μ‘λ μ΄λ€.
- λ§€λ² μ κ·Όμ ν λλ§λ€ μκ°μ΄ 2λ°°λ‘ λμ΄λλ μκ³ λ¦¬μ¦μ΄λ€. (λν: νΌλ³΄λμΉ μμ΄)
κ³΅κ° λ³΅μ‘λ
- μκ³ λ¦¬μ¦μ΄ μνλλ λ°μ νμν λ©λͺ¨λ¦¬μ μ΄λμ μλ―Ένλ€.
- νλ‘κ·Έλ¨μ΄ νμλ‘ νλ λ©λͺ¨λ¦¬ 곡κ°μ μ°μΆνλ κ²μ μλ―Ένλ€.
Greedy Algorithm (νμ μκ³ λ¦¬μ¦)
- μ νμ μκ°λ§λ€ λΉμ₯ λμμ 보μ΄λ μ΅μ μ μν©λ§μ μ°Ύμ μ΅μ’ μ μΈ ν΄λ΅μ λλ¬νλ λ°©λ²μ΄λ€.
- νΉμ§
- νμμ μ ν μμ±(Greedy Choice Property): μμ μ νμ΄ μ΄νμ μ νμ μν₯μ μ£Όμ§ μλλ€.
- μ΅μ λΆλΆ ꡬ쑰(Optimal Substructure): λ¬Έμ μ λν μ΅μ’ ν΄κ²° λ°©λ²μ λΆλΆ λ¬Έμ μ λν μ΅μ λ¬Έμ ν΄κ²° λ°©λ²μΌλ‘ ꡬμ±λλ€.
- λνλ¬Έμ : κ±°μ€λ¦λ λ¬Έμ
Greedy Algorithm λ¬Έμ ν΄κ²° λ¨κ³
- μ ν μ μ°¨(Selection Procedure): νμ¬ μνμμμ μ΅μ μ ν΄λ΅μ μ ννλ€.
- μ μ μ± κ²μ¬(Feasibility Check): μ νλ ν΄κ° λ¬Έμ μ 쑰건μ λ§μ‘±νλμ§ κ²μ¬νλ€.
- ν΄λ΅ κ²μ¬(Solution Check): μλμ λ¬Έμ κ° ν΄κ²°λμλμ§ κ²μ¬νκ³ , ν΄κ²°λμ§ μμλ€λ©΄ μ ν μ μ°¨λ‘ λμκ° μμ κ³Όμ μ λ°λ³΅νλ€.
Algorithm ꡬνμ κΈ°μ΄
- μκ³ λ¦¬μ¦μ νΌλ€? λ΄κ° μκ°ν λ¬Έμ ν΄κ²° κ³Όμ μ μ»΄ν¨ν μ¬κ³ λ‘ λ³ννμ¬ μ½λλ‘ κ΅¬ννλ€λ κ²μ΄λ€.
- μκ³ λ¦¬μ¦μ ν΄κ²°νκΈ° μν΄μλ μ νν νλ‘κ·Έλλ° μΈμ΄μ λ¬Έλ²μ μ νν μκ³ μμ΄μΌ νλ©°, λ¬Έμ μ 쑰건μ μ λΆ λΆν©νλ μ½λλ₯Ό μ€μ μμ΄ λΉ λ₯΄κ² μμ±νλ κ²μ λͺ©νλ‘ λμ΄ μ°μ΅ν΄μΌνλ€.
μμ νμ
- λͺ¨λ λ¬Έμ λ μμ νμμΌλ‘ ν μ μλ€.
- κ΅μ₯ν λ¨μνκ³ λ¬΄μνμ§λ§ λ΅μ΄ 무쑰건 μλ κ°λ ₯ν μ₯μ μ κ°μ§κ³ μλ€.
- 첫 λ²μ§Έ κ·μΉμ λ§μ‘±μν¬ μ μμ§λ§ λ λ²μ§Έ κ·μΉμ λ§μ‘±ν μ μλ κ²½μ°κ° μλ€.
μμ νμμ νλ λ°©λ²
- Brute Force(쑰건/λ°λ³΅μ μ¬μ©νμ¬ ν΄κ²°), μ¬κ·, μμ΄, DFS/BFS λ±
Brute Force (λ¬΄μ°¨λ³ λμ λ°©λ²)
- μμν μ»΄ν¨ν μ±λ₯μ μμ‘΄νμ¬ λͺ¨λ κ°λ₯μ±μ μλνμ¬ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ΄λ€.(μμ νμ)
- 곡κ°, μκ° λ³΅μ‘λμ μμλ₯Ό κ³ λ €νμ§ μκ³ μ΅μ μ μλ리μ€λ₯Ό μ·¨νλλΌλ μ λ΅μ μ°ΎμΌλ €λ λ°©λ²μ΄λ€.
Brute Forceκ° μ¬μ©λλ κ²½μ°
- νλ‘μΈμ€ μλλ₯Ό λμ΄λλ° μ¬μ©ν μ μλ λ€λ₯Έ μκ³ λ¦¬μ¦μ΄ μμ λ
- λ¬Έμ λ₯Ό ν΄κ²°νλ μ¬λ¬ μ루μ μ΄ μκ³ κ° μ루μ μ νμΈν΄μΌ ν λ
Brute Forceμ νκ³
- λ¬Έμ κ° λ³΅μ‘ν΄μ§μλ‘ κΈ°νκΈμμ μΌλ‘ λ§μ μμ(μκ°, μ»΄ν¨ν )μ νμλ‘ νλ μκ³ λ¦¬μ¦μ΄ λ μ μλ€.
Brute Forceλ₯Ό μ¬μ©νλ λ¬Έμ
- μμ°¨ κ²μ μκ³ λ¦¬μ¦ (Sequential Search)
- λ°°μ΄μμ νΉμ κ°μ΄ μ‘΄μ¬νλμ§ κ²μν λ μΈλ±μ€ 0λΆν° λ§μ§λ§ μΈλ±μ€κΉμ§ μ°¨λ‘λλ‘ κ²μνλ€.
- λ¬Έμμ΄ λ§€μΉ μκ³ λ¦¬μ¦ (Brute Force String Matching)
- κΈΈμ΄κ° nμΈ μ 체 λ¬Έμμ΄κ³Ό κΈΈμ΄κ° mμΈ λ¬Έμμ΄ ν¨ν΄μ ν¬ν¨νλμ§λ₯Ό κ²μνλ€.
- μ ν μ λ ¬ μκ³ λ¦¬μ¦ (Selection Sort)
- μ 체 λ°°μ΄μ κ²μνμ¬ νμ¬ μμμ λΉκ΅νκ³ μ»¬λ μ μ΄ μμ ν μ λ ¬λ λκΉμ§ νμ¬ μμλ³΄λ€ λ μκ±°λ ν° μμ(μ€λ¦μ°¨μ, λ΄λ¦Όμ°¨μ)λ₯Ό κ΅ννλ μ λ ¬ μκ³ λ¦¬μ¦μ΄λ€.
- λ²λΈ μ λ ¬ μκ³ λ¦¬μ¦ (Bubble Sort)
- BFS, DFS
- DP
Dynamic Programming (DP, λμ κ³νλ²)
- νλμ λ¬Έμ λ λ¨ ν λ²λ§ νλλ‘νλ μκ³ λ¦¬μ¦μ΄λ€.
- νμ μκ³ λ¦¬μ¦κ³Ό ν¨κ» μΈκΈλλ μκ³ λ¦¬μ¦μ΄λ©°, νμ μκ³ λ¦¬μ¦κ³Ό κ°μ΄ μμ λ¬Έμ μμ μΆλ°νλ€.
- λͺ¨λ κ²½μ°μ μλ₯Ό μ‘°ν©ν΄ μ΅μ μ ν΄λ²μ μ°Ύλ μκ³ λ¦¬μ¦μ΄λ€.
- μ£Όμ΄μ§ λ¬Έμ λ₯Ό μ¬λ¬ κ°μ (μμ) νμ λ¬Έμ λ‘ λλμ΄ νκ³ , νμ λ¬Έμ λ€μ ν΄κ²° λ°©λ²μ κ²°ν©νμ¬ μ΅μ’ λ¬Έμ λ₯Ό ν΄κ²°νλ€.
- νμ λ¬Έμ λ₯Ό κ³μ°ν λ€ κ·Έ ν΄κ²°μ± μ μ μ₯νκ³ , λμ€μ λμΌν νμ λ¬Έμ λ₯Ό λ§λ κ²½μ° μ μ₯λ ν΄κ²°μ± μ μ μ©ν΄ κ³μ° νμλ₯Ό μ€μΈλ€.
Dynamic Programmingμ μ¬μ©ν μ μλ 쑰건
- Overlapping Sub-problems: ν° λ¬Έμ λ₯Ό μμ λ¬Έμ λ‘ λλ μ μκ³ , μ΄ μμ λ¬Έμ κ° μ€λ³΅ν΄μ λ°κ²¬λλ€.
- Optimal Substructure: μμ λ¬Έμ μμ ꡬν μ λ΅μ κ·Έκ²μ ν¬ν¨νλ ν° λ¬Έμ μμλ κ°λ€. μ¦, μμ λ¬Έμ μμ ꡬν μ λ΅μ ν° λ¬Έμ μμλ μ¬μ©ν μμλ€.
π μΆκ°λ‘ 곡λΆν λ΄μ©
[udemy] React μλ²½ κ°μ΄λ κ°μ 보기 (λ§€μΌ μ‘°κΈμ© μ΄λΌλ κΎΈμ€ν λ£κΈ°) (μμ£Ό)
Studyμκ³Ό ν¨κ» μ§νμ€μΈ νλ‘μ νΈ κ΅¬ν
pre-Project μ¬μ΄νΈ μ°ΎκΈ°
π μ€μν λ΄μ©
- μκ³ λ¦¬μ¦μ΄λ?
- μκ° λ³΅μ‘λ
- Big-O νκΈ°λ²
- κ³΅κ° λ³΅μ‘λ
- 그리λ μκ³ λ¦¬μ¦
- λΈλ£¨νΈν¬μ€ μκ³ λ¦¬μ¦
'Daily > Today I Learned' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
22.08.12_TIL (0) | 2022.08.12 |
---|---|
22.08.11_TIL (0) | 2022.08.10 |
22.08.09_TIL (0) | 2022.08.09 |
22.08.08_TIL (0) | 2022.08.08 |
22.08.05_TIL (0) | 2022.08.05 |