βπ[Backend Development] 무ν Depth λκΈ μ‘°ν - λ¬Έμμ΄ κΈ°λ° κ²½λ‘ κ΄λ¦¬, λ§μ μ°μ°, μμΈ μ²λ¦¬β
β 1οΈβ£ λ¬Έμμ΄ κΈ°λ° λκΈ κ²½λ‘(Path) κ΄λ¦¬
- Path Enumeration λ°©μμμ μ«μκ° μλ λ¬Έμμ΄μ κΈ°λ°μΌλ‘ λκΈμ κ²½λ‘λ₯Ό κ΄λ¦¬ν΄μΌ ν©λλ€.
π Path λ¬Έμμ΄ μ°μ°μ ν΅μ¬.
- λκΈ κ²½λ‘λ₯Ό λ¬Έμμ΄λ‘ κ΄λ¦¬νκΈ° λλ¬Έμ, λ§μ μ°μ°μ μνν λ μ«μκ° μλ λ¬Έμμ΄ κΈ°λ° μ°μ°μ΄ νμν©λλ€.
- λμλ¬Έμ λ° μ«μ κ°μ κ΄κ³(0~9 < A~Z < a~z)λ₯Ό μ΄ν΄νκ³ , λ¬Έμμ΄μ μ¦κ°μν€λ λ‘μ§μ΄ νμν©λλ€.
0~9 < A~Z < a~z
- μ΄λ¬ν μ λ ¬ κ·μΉμ μ΄ν΄νλ©΄, λκΈμ κ²½λ‘(Path)λ₯Ό μ¦κ°μν€λ μ°μ°μ μ½λλ‘ κ΅¬νν μ μμ΅λλ€.
β 2οΈβ£ β00000βλΆν° βzzzzzβκΉμ§ μ¦κ°νλ λ¬Έμμ΄ μ°μ°
- Path κ°μ β00000βλΆν° μμνμ¬ μ¦κ°νλ λ°©μμΌλ‘ κ΄λ¦¬λ©λλ€.
π λ¬Έμμ΄ κΈ°λ° μ λ ¬ λ°©μ.
-
- β00000β β β00001β β β¦ β βAAAA9β β βAAAAAβ β β¦ β βzzzzzβλ‘ μ¦κ°
-
- λ¬Έμμ΄μ λμλ¬Έμ μμλ₯Ό νμ©νμ¬ μ λ ¬ (0-9, A-Z, a-z)
-
- λκΈμ΄ μΆκ°λ λλ§λ€ μ΄μ λκΈμ κ²½λ‘μ 1μ λνμ¬ μλ‘μ΄ κ²½λ‘ μμ±
β 3οΈβ£ λ¬Έμμ΄ κΈ°λ° λ§μ (μ¦κ°) μ°μ°.
- Path κ°μ΄ λ¬Έμμ΄λ‘ κ΄λ¦¬λλ―λ‘, μ«μκ° μλλΌ λ¬Έμμ΄ λ§μ μ μννλ μκ³ λ¦¬μ¦μ΄ νμν©λλ€.
π λ¬Έμμ΄ λ§μ λ°©μ
-
- μ€λ₯Έμͺ½ λ¬ΈμλΆν° 1μ© μ¦κ°
-
- carry(μ¬λ¦Όμ)κ° μμΌλ©΄ λ€μ λ¬Έμλ μ¦κ°
-
- βzzzzzβμ λλ¬νλ©΄ Overflow λ°μ
π μμ :
a39zz
+ 1
------
a3A00
- zλ₯Ό λμ΄κ°λ©΄ 0μΌλ‘ μ΄κΈ°νλκ³ , μμ리 μ«μκ° μ¦κ°ν¨.
- carryλ₯Ό λ°μνμ¬ μ¬κ·μ μΌλ‘ μ²λ¦¬.
β 4οΈβ£ μ«μ κΈ°λ° λ§μ λ°©μ
- λ¬Έμμ΄ μ°μ°μ΄ 볡μ‘ν μ μμΌλ―λ‘, 62μ§μ λ³ν ν μ«μλ‘ μ°μ°νλ λ°©λ²λ κ³ λ €ν μ μμ΅λλ€.
π μ«μλ‘ λ³ν ν μ°μ°νλ λ°©λ².
-
- 62μ§μ λ¬Έμμ΄μ 10μ§μ μ«μλ‘ λ³ν
-
- μ«μλ‘ λ§μ μν
-
- λ€μ 62μ§μ λ¬Έμμ΄λ‘ λ³ν
62μ§μ ("00000" ~ "zzzzz") β 10μ§μ λ³ν β +1 μ°μ° β λ€μ 62μ§μ λ³ν
- μ΄ λ°©λ²μ μ¬μ©νλ©΄ λ¬Έμμ΄ μ°μ°λ³΄λ€ ν¨μ¨μ μΈ λ°©μμΌλ‘ Pathλ₯Ό μ¦κ°μν¬ μ μμ΅λλ€.
β 5οΈβ£ μμΈ μΌμ΄μ€ μ²λ¦¬ - μ΅μ΄ λκΈ μμ±
- Pathλ₯Ό κ΄λ¦¬ν λ, μ΅μ‘° λκΈμ΄ μμ±λλ κ²½μ°λ₯Ό μ²λ¦¬ν΄μΌ ν©λλ€.
π μ²λ¦¬ λ°©λ².
-
- λΆλͺ¨ λκΈ(00a0z)μ νμ λκΈμ΄ μλ κ²½μ°
-
- 첫 λ²μ§Έ νμ λκΈμ μμ±ν΄μΌ ν¨
-
- Path κ°μ λΆλͺ¨ Path + β00000βλ‘ μ€μ
π μμ :
λΆλͺ¨ Path: 00a0z
첫 λ²μ§Έ νμ λκΈ Path: 00a0z 0000
β 6οΈβ£ λκΈ κ²½λ‘κ° zzzzzκΉμ§ λλ¬ν κ²½μ°.
- Path κ°μ΄ zzzzzκΉμ§ μ¦κ°νλ©΄, λ μ΄μ μλ‘μ΄ Pathλ₯Ό μμ±ν μ μλ λ¬Έμ κ° λ°μν©λλ€.
π ν΄κ²° λ°©λ².
-
- Pathλ₯Ό ꡬμ±νλ λ¬Έμ κ°μλ₯Ό μ¦κ°(5 β 6, 7 β¦)
-
- λ λμ λ²μμ Path κ°μ νμ©νλλ‘ κ°μ
62^5 = 16,132,832 (κΈ°μ‘΄)
62^6 = 998,001,488 (νμ₯ κ°λ₯)
- Pathμ μ리 μλ₯Ό λ리면 λ λ§μ λκΈμ μ μ₯νκ³ μ λ ¬ κ°λ₯ν©λλ€.
β 7οΈβ£ μ΅μ’ μ 리
π 무ν Depth λκΈ μ λ ¬μ μν΄ κ³ λ €ν΄μΌ ν μ¬ν
-
- Path κ°μ λ¬Έμμ΄λ‘ κ΄λ¦¬ν΄μΌ νλ―λ‘, λ¬Έμμ΄ κΈ°λ° λ§μ μ°μ°μ΄ νμ
-
- μ«μλ‘ λ³ννμ¬ 62μ§μ μ°μ°μ μννλ λ°©μλ κ°λ₯
-
- μ΅μ΄ λκΈ μμ± μ κΈ°λ³Έ Path(β00000β)μ μΆκ°
-
- Pathκ° κ°λ μ°¬ κ²½μ°, μ리 μλ₯Ό λλ € λ λ§μ κ²½λ‘λ₯Ό μ μ₯ κ°λ₯