νΌλλ‘ λμκ°κΈ°
Dev.toBackend
μλ¬Έ μ½κΈ°
Memoization λμ μΌλ‘ μ§μ μκ° λ³΅μ‘λλ₯Ό O(m*n)μΌλ‘ μ΅μ νν κ²½λ‘ νμ μ€κ³
π LeetCode 329: Longest Increasing Path in a Matrix (DFS + Memoization) | Easy Explanation
AI μμ½
Context
Matrix λ΄ μ΅μ₯ μ¦κ° κ²½λ‘ νμ μ λ¨μ DFS κΈ°λ° Brute Force μ κ·Ό λ°©μ μ±ν. λμΌ κ²½λ‘μ μ€λ³΅ κ³μ°μΌλ‘ μΈν Exponential Time Complexity λ°μ λ° λκ·λͺ¨ Matrix μ²λ¦¬ μ TLE(Time Limit Exceeded) μ λ° κ°λ₯μ± μ‘΄μ¬.
Technical Solution
- Overlapping Subproblems μλ³μ ν΅ν Memoization ꡬ쑰 μ€κ³
dp[i][j]λ°°μ΄μ νμ©νμ¬ νΉμ μ’νμμ μμνλ μ΅μ₯ κ²½λ‘ κΈΈμ΄λ₯Ό μΊμ±νμ¬ μ€λ³΅ κ³μ° μ κ±°- 4λ°©ν₯ νμμ μν Direction Array(
dx,dy) κΈ°λ°μ μ ννλ Matrix Traversal ν¨ν΄ μ μ© matrix[x][y] < matrix[x2][y2]쑰건μ ν΅ν μν μ μ΄ μ μ΄λ‘ μ¬μ΄ν΄ λ°μ κ°λ₯μ± μμ² μ°¨λ¨- DFS μ¬κ· νΈμΆ κ³Όμ μμ νμ λ¬Έμ μ κ²°κ³Όλ₯Ό μμ λ Έλλ‘ μ ννλ Bottom-up λ°©μμ κ²½λ‘ κΈΈμ΄ ν©μ°
- Boundary Check λ‘μ§μ ν΅ν Matrix μΈλ±μ€ Out-of-Bounds μμΈ λ°©μ§
μ€μ² ν¬μΈνΈ
Matrix νμ μ€κ³ μ μ€λ³΅ μν μ‘΄μ¬ μ¬λΆλ₯Ό νμΈνμ¬ Memoization μ μ© κ²ν . DFS κΈ°λ° κ²½λ‘ νμ μ λ°©λ¬Έ μ²λ¦¬ λμ μν κΈ°λ° μΊμ±μ ν΅ν΄ μκ° λ³΅μ‘λλ₯Ό μ νμ μΌλ‘ μ΅μ ννλ ν¨ν΄ μ μ© κ°λ₯.