μλ νμΈμ! μ΄λ² ν¬μ€ν μμλ DP, λμ κ³νλ²μ λν΄μ μ μ΄λ³΄κ² μ΅λλ€. λμ κ³νλ² λμ κ³νλ²(Dynamic Programming) μ μ΅μ ν λ¬Έμ λ₯Ό ν΄κ²°νλ μκ³ λ¦¬μ¦μ λλ€. μ¬κΈ°μ μ΅μ ν μκ³ λ¦¬μ¦μ΄λ μ΅λκ° λλ μ΅μκ°μ ꡬνλ λ¬Έμ μ΄κ±°λ, κ²½μ°μ μλ₯Ό ꡬνλ λ¬Έμ κ° μν μ μμ΅λλ€. λμ κ³νλ²μ λ¬Έμ λ₯Ό μμ λ¬Έμ λ€λ‘ λλμ΄μ μμ λΆλΆ λ¬Έμ λ€μ ν΄λ₯Ό ꡬνκ³ , μ΄κ²λ€μ μ΄μ©ν΄ ν° ν¬κΈ°μ λΆλΆ λ¬Έμ λ€μ ν΄κ²°νμ¬ μ΅μ’ λ¬Έμ λ₯Ό ν΄κ²°νλ μ€κ³ κΈ°λ²μ λλ€. λμ κ³νλ²μ μ΅μ λΆλΆλ¬Έμ ꡬ쑰μ μ€λ³΅ λΆλΆλ¬Έμ ꡬ쑰λ₯Ό κ°μ§κ³ μμ΄μΌ νλ€λ μ‘°κ±΄μ΄ μμ΅λλ€. Optimal substructure Optimal substructure, μ΅μ λΆλΆλ¬Έμ λΌκ³ ν΄μν μ μλ μ΄κ²μ μ΄λ€ λ¬Έμ μ λν ν΄κ° μ΅μ μΌ λ κ·Έ ν΄λ₯Ό ꡬμ±νλ μμ λ¬Έμ λ€μ ν΄ μμ μ΅μ μ΄μ΄μΌ νλ€λ κ²μ λλ€. μμμ λμ κ³νλ²μ μμ λ¬Έμ λ€λ‘
μλ νμΈμ! μ€λ 곡λΆν ν μλ£κ΅¬μ‘°λ₯Ό μμ±ν΄ λ³΄κ² μ΅λλ€. HEAP νμ μμ μ΄μ§ νΈλ¦¬μ μλ λ Έλ μ€μμ ν€ κ°μ΄ κ°μ₯ ν° λ Έλλ ν€ κ°μ΄ κ°μ₯ μμ λ Έλλ₯Ό μ°ΎκΈ° μν΄ λ§λ μλ£ κ΅¬μ‘°μ λλ€. νμ μ’ λ₯μλ μ΅λ ν (max heap) , μ΅μ ν (min heap) μ΄ μμ΅λλ€. μ΅λ ν μ΅λ νμ ν€ κ°μ΄ κ°μ₯ ν° λ Έλλ₯Ό μ°ΎκΈ° μν μμ μ΄μ§ νΈλ¦¬μ λλ€. λΆλͺ¨ λ Έλμ ν€ κ°μ μμ λ Έλμ ν€ κ°λ³΄λ€ νμ ν½λλ€. κ·Έλ λ€λ©΄ μ΅λ νμ λ£¨νΈ λ Έλλ νΈλ¦¬μ μ΅λκ°μ΄ λ κ²μ λλ€. μ΅μ ν μ΅μ νμ ν€ κ°μ΄ κ°μ₯ μμ λ Έλλ₯Ό μ°ΎκΈ° μν μμ μ΄μ§ νΈλ¦¬μ λλ€. λΆλͺ¨ λ Έλμ ν€ κ°μ μμ λ Έλμ ν€ κ°λ³΄λ€ νμ ν½λλ€. κ·Έλ λ€λ©΄ μ΅μ νμ λ£¨νΈ λ Έλλ νΈλ¦¬μ μ΅μκ°μ΄ λ κ²μ λλ€. νμ λΆμν΄λ³΄μ νμ μμλ₯Ό λ£κΈ° μν΄μλ **νμ¬ νΈλ¦¬μ λμ΄(level) λ§νΌ λΆ
μλ νμΈμ! μ΄λ² ν¬μ€ν μμλ λ°±νΈλνΉ μκ³ λ¦¬μ¦ κΈ°λ²κ³Ό κ·Έλν μλ£κ΅¬μ‘°μ λν΄μ μ 리ν΄λ³΄κ² μ΅λλ€. Backtracking μκ³ λ¦¬μ¦μ ν λ, λͺ¨λ μ‘°ν©μ μλν΄μ λ¬Έμ μ ν΄λ₯Ό μ°Ύμλ΄λ λ°©λ²μ ν΄λ₯Ό μ»μ λκΉμ§ λͺ¨λ κ°λ₯μ±μ μλν©λλ€. μμ μκ³ λ¦¬μ¦ κΈ°λ²μ λ³΄ν΅ μ¬κ· ν¨μλ‘ κ΅¬νλλ©° μμ νμμ λνμ μΈ λ°©λ²μ BFS, DFSκ° μμ΅λλ€. νμ§λ§ μμ λ°©λ²μ μ¬μ©νλ©΄ ν΄λ΅μ΄ λ κ°λ₯μ±μ΄ μ ν μλ μ‘°ν©κΉμ§λ λͺ¨λ μλν΄λ΄μΌνκΈ° λλ¬Έμ λΉν¨μ¨μ μ λλ€. μ¬κ· ν¨μκ° μκ°μ μΌλ‘ ν¨μ¨μ μΈ ν¨μκ° μλλ°λ€κ°, νΈμΆ νμκ° μκ° λ³΅μ‘λκ° λκΈ° λλ¬Έμ μ¬κ· ν¨μμμ μκ°μ μΈ ν¨μ¨μ±μ λμ΄λ €λ©΄ ν¨μ νΈμΆ νμλ₯Ό μ€μ΄λ κ²μ΄ κ΄κ±΄μ λλ€. λ°±νΈλνΉ μκ³ λ¦¬μ¦ κΈ°λ²μ μ΄λ€ λ Έλμ μ λ§μ±μ μ κ²ν νμ μ λ§νμ§ μλ€κ³ κ²°μ λλ©΄ κ·Έ λ Έλμ λΆλͺ¨λ‘ λλμκ° λ€μ μμ λ Έλλ‘ κ°λ λ°©λ²μ λλ€. **μ λ§νλ€ `promis
μλ νμΈμ! μ΄λ² ν¬μ€ν μμλ Greedy μκ³ λ¦¬μ¦κ³Ό λΆν μ 볡 μκ³ λ¦¬μ¦μ λν΄μ μ€λͺ νλλ‘ νκ² μ΅λλ€. Greedy νμ μκ³ λ¦¬μ¦μ μ΅μ ν΄λ₯Ό ꡬνλ λ° μ¬μ©λλ λ°©λ²μ λλ€. μΌλ°μ μΌλ‘, 머리 μμ λ μ€λ₯΄λ μκ°μ κ²μ¦ μμ΄ λ°λ‘ ꡬννλ©΄ 그리λμ μΈ μ κ·Όμ΄ λ©λλ€. Greedy μμ ν΅μ¬μ νλ² μ νλ κ²μ λ²λ³΅νμ§ μλλ€λ κ²μ λλ€. νμ κ·Έ μμ μμ μ΅μ μ μ νλ§μ νλ―λ‘ λ€μ λλμκ°μ νμΈνλ μ μ°¨κ° μμ΅λλ€. λ°λΌμ μ΅μ μ±μ λν κ²μ¦μ μκ³ λ¦¬μ¦ λ‘μ§μ μκ°ν λ 체ν¬ν΄μΌ ν©λλ€. νμ μκ³ λ¦¬μ¦μ νμ μμλ greedy choice property μ optimal substructure property κ° μμ΅λλ€. greedy choice property : νμμ μ νμ νμ μ΅μ ν΄λΌλ κ²μ κ²μ¦ν΄μΌ νλ€. *optimal substructure property
μλ νμΈμ! (μ΄μ 곡λΆν λ΄μ©μ΄μ§λ§) μ€λ μ°λκΉ μλ¬΄νΌ TIL!! μ΄λ² ν¬μ€ν μμλ νΈλ¦¬μ νΈλ¦¬ νμμ μμ£Ό μ°μ΄λ BFS , DFS λ₯Ό μ 리ν΄λ³΄κ² μ΅λλ€. Tree νΈλ¦¬ μλ£κ΅¬μ‘°λ λΆλͺ¨-μμμ 1:N κ΄κ³λ₯Ό κ°μ§λ λΉμ ν μλ£κ΅¬μ‘°μ λλ€. μμλ€ κ°μ κ³μΈ΅ κ΄κ³λ₯Ό κ°μ§λ κ³μΈ΅ν μλ£κ΅¬μ‘°λΌκ³ λ ν©λλ€. μμ μμμμ νμ μμλ‘ λ΄λ €κ°λ©΄μ νμ₯λλ νΈλ¦¬λͺ¨μμ ꡬ쑰μ λλ€. μ©μ΄ λ Έλ(node) : νΈλ¦¬μ μμ λ£¨νΈ λ Έλ(root node) : νΈλ¦¬μ μμ λ ΈλμΈ μ΅μμ λ Έλ κ°μ (edge) : λ Έλμ λ Έλλ₯Ό μ°κ²°νλ μ μΌλ‘ λΆλͺ¨ λ Έλμ μμ λ Έλλ₯Ό μ°κ²° νμ λ Έλ(sibling node) : κ°μ λΆλͺ¨ λ Έλμ μμ λ Έλλ€ -
μλ νμΈμ! μ€λ 곡λΆν Javaμ Comparable , Comparator μ λν΄μ μμ±ν΄λ³΄κ² μ΅λλ€. Comparable Comparable μ μΈν°νμ΄μ€μ λλ€. Comparable μ compareTo() λ©μλλ κ°μ²΄λ₯Ό μ λ ¬νλλ° μ¬μ©λ©λλ€. μλ°μμ κ°μ μΈμ€ν΄μ€λ₯Ό λΉκ΅νλ ν΄λμ€λ€μ λͺ¨λ Comparable μΈν°νμ΄μ€λ₯Ό ꡬννκ³ μμ΅λλ€. λ©μΈ λ©μλμμ μ μ½λλ₯Ό μ€νμν€λ©΄ μ΄λ€ κ²°κ³Όκ° λμΆλ κΉμ? int νμ λ°°μ΄μ λ¬Όλ‘ , String νμ μ λ°°μ΄λ μ λ ¬λ©λλ€. μ
μλ νμΈμ! μ€λ 곡λΆν Linked List μ λν΄μ κ°λ¨νκ² μ μ΄λ³΄κ² μ΅λλ€. 리μ€νΈ μλ°μμ 리μ€νΈλ μμλ₯Ό κ΄λ¦¬νλ μμλ₯Ό κ°μ§ λ°μ΄ν°μ μ§ν©μ κ°λ¦¬ν€λ μΆμμ μΈ μλ£νμ λλ€. λμΌν λ°μ΄ν°λ₯Ό κ°μ§κ³ μμ΄λ μκ΄ μμ΅λλ€. 리μ€νΈλ ꡬν λ°©λ²μ λ°λΌ μμ°¨ 리μ€νΈ μ μ°κ²° 리μ€νΈλ‘ λλ©λλ€. μμ°¨ 리μ€νΈ : λ°°μ΄ κΈ°λ°μ 리μ€νΈ μ°κ²° 리μ€νΈ : λ©λͺ¨λ¦¬ λμ ν λΉμ κΈ°λ°μΌλ‘ ꡬννλ 리μ€νΈ μμ°¨ 리μ€νΈ μμ°¨ 리μ€νΈλ μ½κ² λ§ν΄μ μλ°μ λ°°μ΄μ λ»ν©λλ€. μμ°¨ 리μ€νΈμμλ λ°°μ΄μ μΈλ±μ€λ₯Ό μ΄μ©ν΄ μνλ μμΉμ λ°μ΄ν°μ μ κ·Όν μ μμ΅λλ€. μμ°¨ 리μ€νΈμμ μ½μ μ°μ°μ μλμ μμλλ‘ μ€νλ©λλ€. > 1. μ½μ ν μΈλ±μ€λ₯Ό λΉμλ¬μΌ ν©λλ€. 2. μ½μ ν μΈλ±μ€κ° λ°°μ΄μ λ§μ§λ§μ΄ μλ κ°μ₯ μ λλ μ€κ°μ΄λΌλ©΄ μ½μ μμΉ λ€μμ νλͺ©λ€μ λͺ¨λ λ€λ‘ μ΄λμμΌμΌ ν©λλ€. 3. κ·Έ ν μ½μ
μλ νμΈμ! μ€λμ 곡λΆν λΆλΆμ§ν©, μ€ν, νμ λν΄μ μμ±ν΄λ³΄λ €κ³ ν©λλ€. λΆλΆμ§ν© μ§ν©μ ν¬ν¨λ μμλ€μ λΆλΆμ μΌλ‘ μ ννλ κ²μ λλ€. λ€μμ μκ³ λ¦¬μ¦μ μ΅μ μ λΆλΆ μ§ν©μ μ°Ύλ ν΄λ²μ΄ μμ£Ό μ°μ λλ€. λΆλΆμ§ν© λΆμν΄λ³΄κΈ° λΆλΆμ§ν©μ μλ μ§ν©μ μμκ° n κ°μΌ λ, 곡μ§ν©μ ν¬ν¨ν΄μ 2^n κ° μ λλ€. μ¦, μμλ₯Ό λΆλΆμ§ν©μ ν¬ν¨νκ±°λ ν¬ν¨νμ§ μλ κ²½μ°λ₯Ό λͺ¨λ μ μ©ν κ²μ λλ€. μ°μ₯μ μμΌλ‘ μκ°λ³΅μ‘λλ O(2^n) μ΄ λ κ²μ λλ€. n μ΄ 30μ΄λΌλ©΄ μ½ 10μ΅λ²μ μ°μ°μ΄ νμνλ, λΉν¨μ¨μ μΈ μκ°λ³΅μ‘λμ μνλ€κ³ ν μ μμ΅λλ€! κ°λ¨ν μ½λλ‘ λ³΄μ μ¬κ·μ μΌλ‘ ꡬνμ νλ λ°©λ²μ λλ€. μμ λ°©λ²μ λΆλΆμ§ν© μμμ κ°μκ° 3κ°λΌκ³ λ νμ§λ§, 곡μ§ν©λ ν¬ν¨λ©λλ€. κ·Έλμ λͺ¨λ μμλ₯Ό ν¬ν¨νλλ‘ νλ€λ©΄ μ‘°ν©κ³Ό κ°μ λ‘μ§μ΄ μμ±λ κ²μ λλ€. μ€ν μ€νμ **LIFO (Last-
μλ νμΈμ! μ€λμ νλ£¨μ’ μΌ μκ³ λ¦¬μ¦ λ¬Έμ λ§ νμλλ°μ γ .γ νΌ μκ³ λ¦¬μ¦ μ€μμ μκ° κ³ λ €νλλΌ μ μΌλ λ¬Έμ νμ΄λ₯Ό μ μ΄λ³΄κ² μ΅λλ€. λ¬Έμ μμ½ μ΄ λ¬Έμ λ μ£Όμ΄μ§ Nκ°μ μλ₯Ό μμ λ³΄λ€ μμ μ«μκ° λͺ κ° μλμ§ κ³μ°ν΄μ κ°μ κ°±μ νλ λ¬Έμ μ λλ€. μ£Όμν μ μ¬κΈ°μμ, N μ΄ μ΅λ 1,000,000 μ΄λΌλ κ²μ μ§μ€ν΄μΌ ν©λλ€. μ΄ μν©μμ μκ°λ³΅μ‘λλ O(N^2) μ΄ λλ€λ©΄ μκ° μ΄κ³Όκ° λ°μν κ²μ λλ€. μ¦, for λ¬Έ μνλ₯Ό μ€λ³΅μΌλ‘ νλ©΄ μλλ€λ μλ―ΈμΌ κ²μ λλ€. μ²μ μκ°ν λ°©λ² > μ λ ₯λ°μ N κ°μ μλ λ°°μ΄λ‘ λ§λ€κ³ , Set μ νμ©ν΄μ μ€λ³΅μ μμ€ λ°°μ΄μ λ§λ€μ΄μ κ³μ°νμ! μμ κ°μ΄ μκ°νμ§λ§.. ν κ°μ§ λμΉ λΆλΆμ΄ μ
μλ νμΈμ! μ€λ 곡λΆν μκ³ λ¦¬μ¦μ λν΄ κ°λ¨νκ² μ 리ν΄λ³΄κ² μ΅λλ€ ~ μμ΄ What is μμ΄? π€ μμ΄μ μλ‘ λ€λ₯Έ κ²λ€ μ€ λͺ κ°μ§λ₯Ό λ½μμ ν μ€λ‘ λμ΄νλ κ² μ μλ―Έν©λλ€. μμ΄μ μμλ μ μλ―Έν©λλ€. λ°λΌμ, μμκ° λ°λλ€λ©΄ λ€λ₯Έ μμ΄μ λ»ν©λλ€. > μμλ‘, νκ΅ μ΄νλ₯Ό λ½λλ€κ³ νμ λ λΆμλ³λ‘ nλͺ λ½λλ€λ κ²μ λ½νλ μμλ μ€μνμ§ μμ΅λλ€. λ½νλλ, μλ½νλλκ° μ€μνκ² μ£ ? κ·Έμ λ°λλ‘ λνκ΅ μλΉ λ²νΈλ₯Ό μκ°ν΄λ³΄λ©΄, μμλ λ무 μ€μνκ² μ£ . 1λ²μ΄λΌλ©΄ λνκ΅μ λΆμ μλ μμ§λ§, 1000λ²μ κ°λ§μ΄ μλ€κ³ μκ°ν κ²μ λλ€. 첫 λ²μ§Έ μμμΈ μ΄νλ₯Ό nλͺ λ½λλ€λ κ²μ λ½λ μμκ° μ€μνμ§ μμ μ‘°ν© , λ λ²μ§Έ μμμΈ λνκ΅ μλΉ λ²νΈλ μμκ° μ€μν μμ΄ μ λλ€! μμ΄μ λΆμν΄λ³΄μ! μμ΄μ μνμ μμΌλ‘ λνλ΄λ©΄, nPr μ λλ€. n μ μ΄ μμμ κ°μμ΄κ³ , r