[Programmers] JavaScript, νμλ², 체μ‘볡 λ¬Έμ (Destructuring Assignment/fill)
programmers.co.kr/learn/courses/
νλ‘κ·Έλλ° κ°μ
κΈ°μ΄λΆν° μ°¨κ·Όμ°¨κ·Ό, μ§μ μ½λλ₯Ό μμ±ν΄ 보μΈμ.
programmers.co.kr
νμλ² μκ³ λ¦¬μ¦ κ°μ
νμλ² μκ³ λ¦¬μ¦μ νμ©νλ λ¬Έμ . νμλ²(Greedy Algorithm)μ λμ νλ‘κ·Έλλ°(λλ λμ κ³νλ², Dynmaic Programming) μ¬μ© μ μ§λμΉκ² λ§μ μΌμ νλ€λ κ²μμ κ³ μλ μκ³ λ¦¬μ¦μ΄λΌκ³ νλ€. λ λ°©λ²μ μλ‘ μ°¨μ΄μ μ΄ μ‘΄μ¬νλ©°, 보μνλ λ°©μμΌλ‘ νμ©μ΄ λλ€κ³ νλ€.
λμ κ³νλ²μ μ 체 λ¬Έμ λ₯Ό μ¬λ¬ κ°μ νμ λ¬Έμ λ‘ μͺΌκ°μ΄ νκ³ , νμ λ¬Έμ μ ν΄κ²° λ°©λ²μ κ²°ν©ν΄ μ΅μ’ λ¬Έμ λ₯Ό ν΄κ²°νλ€. νΌλ³΄λμΉμ μμ΄μ΄ λνμ μΈ μμ΄λ€. μ΄λ° νλ‘κ·Έλλ° λ°©μμ ν¨μ¨μ μν΄ ν¨μ κ²°κ³Ό κ°μ μ μ₯νλ©° μ΅μ’ κ²°κ³Όλ¬Όμ μ°Ύλλ€. λλ¦ κ³μ° νμλ₯Ό μ€μ¬λκ°λ―λ‘, μ΅μ₯ κ³΅ν΅ λΆλΆ μμ΄, λΆλΆμ§ν©μ ν©, λ°°λ λ¬Έμ λ±μ μκ³ λ¦¬μ¦ λ¬Έμ λ₯Ό ν μ μλ€.
νμλ²μ λνμ μΈ μμ λ νλ μ ν λ¬Έμ (Activity Selection Problem)κ° μλ€. ν λ²μ νλμ νλλ§ ν μ μλ κ°μμ€μμ μ μλ νλ μ€ κ°μ₯ λ§μ νλμ μ²λ¦¬ν μ μλλ‘ μκ°νλ₯Ό μ§λ λ¬Έμ μ΄λ€. κ°μ₯ λ¨Όμ λλλ νλμ ννλ©΄, κ²°κ³Όμ μΌλ‘ μ΅λν λ§μ νλμ μκ°νμ λ£μ μ μλ€.
νμλ²μ λ¬Έμ ν΄κ²° κ³Όμ μμ κ·Έ μκ° μκ° μ΅μ μ μ νμ΄λΌλ, μ¦ κ°μ₯ μ’μ보μ΄λ μ νμ μ·¨νλ©° μ΅μ’ ν΄λ΅μ λλ¬νλ€. μ¦, μμΌλ‘μ μ νμ΄λ μ΅μ’ κ²°κ³Όλ₯Ό κ³ λ €νμ§ μλλ€. κ·Έλ¬λ―λ‘ νμλ²μΌλ‘ λμΆλ ν΄κ° λ°λμ μ΅μ μ ν΄λΌλ 보μ₯μ μλ€. λμ κ³μ° μλκ° λΉ λ₯΄λ€λ μ₯μ μ΄ μλ€.
λ¬Έμ
μ λ¬Έμ λ μ 체 νμ μ n, 체μ‘볡μ λλ λΉν νμλ€μ λ²νΈκ° λ΄κΈ΄ λ°°μ΄ lost, μ¬λ² 체μ‘λ³΅μ΄ μλ νμλ€μ λ²νΈκ° λ΄κΈ΄ λ°°μ΄ reserveκ° μ£Όμ΄μ§λ€. 체μ‘λ³΅μ΄ μμ΄μΌ μ²΄μ‘ μμ μ λ£λλ€ νμ λ μ²΄μ‘ μμ μ λ€μ μ μλ μ΅λ νμ μλ₯Ό ꡬν΄μΌ νλ€. μ΅λν λ§μ νμλ€μ΄ 1λ² μ΄μμ 체μ‘볡μ κ°λλ‘ λΆλ°° ν΄μΌ νλ€.
μ½λ
νμ΄
μ°μ κ° νμλ€μ΄ λͺ¨λ 1λ²μ 체μ‘볡μ κ°λλ€κ³ κ°μ νκ³ , λλ λΉν νμμ -1λ², μ¬λ²μ΄ μλ κ²½μ°λ +1λ²λ‘ μ‘°μ ν΄μ£ΌκΈ°λ‘ νλ€. ES6μ μΆκ°λ λ¬Έλ²μΈ fill() λ©μλλ₯Ό νμ©νλ€. Array(n).fill(1)
λ nκ°μ μμλ₯Ό κ°μ§λ λ°°μ΄μ fill()
μ μΈμλ‘ λ€μ΄μ¨ 1μ΄λΌλ μ«μλ₯Ό κ° μμλ‘ ν΄μ€λ€. indexOf()
λ₯Ό ν΅ν΄ λ°°μ΄ λ΄ ν΄λΉ νμ λ²νΈκ° μ‘΄μ¬νλ©΄, νμλ€μ 체μ‘볡 κ°μκ° λ΄κΈ΄ λ°°μ΄μΈ studentsμ μμλ₯Ό μ‘°μ νλ€.
λ λ²μ§Έ forλ¬Έμ for of
λ₯Ό μ¬μ©νλ€. λΉκ΅¬μ‘°ν ν λΉ(destructuring assignment)λ₯Ό μ¬μ©νλ€. Array.prototype.entries()
λ λ°°μ΄μ κ° μΈλ±μ€μ λν΄ Key/Value μμ μλ‘μ΄ Array Iterator κ°μ²΄λ₯Ό λ°ννλ€. let [index, curr] of students.entries()
λ‘ students λ°°μ΄μ μΈλ±μ€μ value(note: currλΌκ³ λ€μ΄λ°ν κ²μ²λΌ, μ΄λ¦μ 무κ΄νλ€. index, value μμ΄λ€.)λ₯Ό λ³μμ μ μΈνλ€.
λ§μΌ νμ¬ κ°(curr)μ΄ 0μΌ λ, λ€μ λ² νμμ 체μ‘볡 κ°μκ° 2λ² μ΄μμΌ λ, studentsμ ν΄λΉ νμλ€μ 체μ‘볡 κ°μλ₯Ό μ‘°μ ν΄μ€λ€. λ§μ°¬κ°μ§λ‘ νμ¬ κ°κ³Ό μ΄μ κ°μ λΉκ΅ν΄μ£Όλ λ‘μ§μ ν λ² μ¬μ©νλ€.
μ΄ν Array.filter ν¨μλ₯Ό ν΅ν΄ students λ°°μ΄μ μμκ° 1μ΄μμΈ κ²½μ°μ κΈΈμ΄λ₯Ό κ΅¬ν΄ λ°ννλ€.
μ°Έκ³
- doorbw.tistory.com/75
- μκ³ λ¦¬μ¦ #10_ 그리λ μκ³ λ¦¬μ¦(Greedy algorithm): νλ μ ν λ¬Έμ
- Array.protoytpe.entries()