Home
>
Backend Development
>
๐[Backend Development] Path Enumeration ๋ฐฉ์์์ ๋๊ธ์ ๊ฒฝ๋ก(Path) ๊ฒฐ์ ๊ณผ์ .
Backend Ddevelopment
โ๐[Backend Development] Path Enumeration ๋ฐฉ์์์ ๋๊ธ์ ๊ฒฝ๋ก(Path) ๊ฒฐ์ ๊ณผ์ .โ
๐1๏ธโฃ ์ ๊ท ๋๊ธ์ ๊ฒฝ๋ก๋ฅผ ๊ฒฐ์ ํ๋ ๊ณผ์
- Path Enumeration(๊ฒฝ๋ก ์ด๊ฑฐ) ๋ฐฉ์์ ์ฌ์ฉํ ๋, ์๋ก์ด ๋๊ธ์ด ์ถ๊ฐ๋ ๊ฒฝ์ฐ ํด๋น ๋๊ธ์ path๋ฅผ ์ด๋ป๊ฒ ๊ฒฐ์ ํ ๊ฒ์ธ์ง๊ฐ ์ค์ํฉ๋๋ค.
- ์ด ๊ธ์์๋ ์ด๋ฏธ ์กด์ฌํ๋ ๊ณ์ธตํ ๋๊ธ ํธ๋ฆฌ์์ ์๋ก์ด ๋๊ธ์ด ์ถ๊ฐ๋ ๋, path๋ฅผ ์ด๋ป๊ฒ ์์ฑํ๋์ง์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
๐๏ธ2๏ธโฃ ๊ธฐ์กด ๋๊ธ ๊ตฌ์กฐ ํ์ธ
โ
๊ธฐ์กด ๋๊ธ ํธ๋ฆฌ

- ์ด๊ธฐ ๋๊ธ ๊ตฌ์กฐ๋ ์์ ๊ฐ์ต๋๋ค.
- ์ต์์ ๋๊ธ 00a0z ์๋์ ์ฌ๋ฌ ๊ฐ์ ํ์ ๋๊ธ์ด ์กด์ฌํฉ๋๋ค.
- ๊ฐ ๋๊ธ์ path ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ผ ๋ถ๋ชจ ๋๊ธ์ path๋ฅผ ์์๋ฐ์ผ๋ฉฐ, ์๋ก์ด ๋๊ธ์ด ์ถ๊ฐ๋ ๋๋ง๋ค ์ซ์๊ฐ ์ฆ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
- ๊ฐ์ฅ ์ต๊ทผ์ ํ์ ๋๊ธ์ 00a0z 00002์ด๋ฉฐ, 00a0z 00002์ ํ์ ๋๊ธ๋ก 00a0z 00002 00000์ด ์กด์ฌํฉ๋๋ค.
๐๏ธ3๏ธโฃ ์ ๊ท ๋๊ธ ์ถ๊ฐ ์์ฒญ.
โ
์๋ก์ด ๋๊ธ ์์ฒญ

- ์ด๋ค ์ฌ์ฉ์๊ฐ 00a0z ๋๊ธ์ ํ์์ ์๋ก์ด ๋๊ธ์ ์์ฑํ๋ ค๊ณ ํฉ๋๋ค.
- ํ์ง๋ง, ํ์ฌ 00a0z์ ํ์ ๋๊ธ๋ค์ ์ด๋ฏธ ์กด์ฌํ๊ณ ์์ผ๋ฏ๋ก, ์๋ก์ด ๋๊ธ์ด ๋ค์ด๊ฐ ์ฌ๋ฐ๋ฅธ path๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
๐๏ธ4๏ธโฃ ํ์ฌ ์กด์ฌํ๋ ํ์ ๋๊ธ ์ค ๊ฐ์ฅ ํฐ path ์ฐพ๊ธฐ
โ
childrenTopPath ์ฐพ๊ธฐ

- ์๋ก์ด ๋๊ธ์ ์ถ๊ฐํ ๋๋, ํ์ฌ ์กด์ฌํ๋ ํ์ ๋๊ธ ์ค ๊ฐ์ฅ ํฐ path(childrenTopPath)๋ฅผ ์ฐพ์์ ๊ทธ ๊ฐ์ +1์ ํ์ฌ ์๋ก์ด ๋๊ธ์ path๋ฅผ ์์ฑํฉ๋๋ค.
- ํ์ฌ 00a0z์ ํ์ ๋๊ธ ์ค์์ ๊ฐ์ฅ ํฐ path๋ 00a0z 00002์
๋๋ค.
- ๋ฐ๋ผ์, ์๋ก์ด ๋๊ธ์ path๋ 00a0z 00003์ด ๋ฉ๋๋ค.
๐๏ธ5๏ธโฃ ๋ชจ๋ ์์ ๋๊ธ์ ๊ณ ๋ คํ descendantsTopPath ์ฐพ๊ธฐ
- ํ์ง๋ง, ๋จ์ํ childrenTopPath๋ง ๊ณ ๋ คํ๋ฉด ์๋ฉ๋๋ค. ์์ ๋๊ธ์ด ์๋ ๊ฒฝ์ฐ, ๊ฐ์ฅ ๊น์ depth์ ์๋ ์์ ๋๊ธ๊น์ง ๊ณ ๋ คํ์ฌ path๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
- descendantsTopPath๋ ๋ถ๋ชจ ๋๊ธ์ ํฌํจํ ๋ชจ๋ ์์ ๋๊ธ ์ค ๊ฐ์ฅ ํฐ path๋ฅผ ์๋ฏธํฉ๋๋ค.
- ์ฆ, 00a0z์ ๋ชจ๋ ํ์ ๋๊ธ ์ค ๊ฐ์ฅ ๊น์ depth๋ฅผ ๊ฐ์ง๋ฉด์๋ ๊ฐ์ฅ ํฐ path๋ฅผ ์ฐพ์ต๋๋ค.
๐๏ธ6๏ธโฃ descendantsTopPath์์ ์ ๊ท ๋๊ธ์ depth์ ๋ง๋ childrenTopPath ๊ณ์ฐ
โ
descendantsTopPath๋ฅผ ๊ธฐ๋ฐ์ผ๋ก path ์์ฑ

- ๊ธฐ์กด ๋๊ธ ์ค ๊ฐ์ฅ ๊น์ depth๋ฅผ ๊ฐ์ง๋ descendantsTopPath๋ฅผ ์ฐพ๊ณ , ์ ๊ท ๋๊ธ์ด ๋ค์ด๊ฐ depth๋งํผ์ path๋ฅผ ๋จ๊ธฐ๊ณ ๋๋จธ์ง๋ ์๋ผ๋
๋๋ค.
- descendantsTopPath = 00a0z 00002 00000
- ํ์ง๋ง ์ ๊ท ๋๊ธ์ด ๋ค์ด๊ฐ depth๋ 2์ด๋ฏ๋ก, (depth * 5)๋งํผ์ ๋ฌธ์๋ง ๋จ๊น๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก childrenTopPath = 00a0z 00002๊ฐ ๋ฉ๋๋ค.
๐๏ธ7๏ธโฃ ์ต์ข
์ ์ผ๋ก childrenTopPath๋ฅผ ์ฐพ์ ์ ๊ท ๋๊ธ์ path ์์ฑ
โ
์ต์ข
path ๊ฒฐ์
- 1. parentPath๋ฅผ ๊ฐ์ง๋ ๋ชจ๋ ์์ ๋๊ธ์ ์กฐํ
- 2. ๊ฐ์ฅ ํฐ descendantsTopPath๋ฅผ ์ฐพ์
- 3. ์ ๊ท ๋๊ธ์ด ๋ค์ด๊ฐ depth๋งํผ path๋ฅผ ๋จ๊ธฐ๊ณ ์๋ฆ โ childrenTopPath ์์ฑ
- 4. ๋ง์ง๋ง ์ซ์์ +1์ ํ์ฌ ์ต์ข
path ๊ฒฐ์
- ๐ ๊ฒฐ๊ณผ์ ์ผ๋ก, ์๋ก์ด ๋๊ธ์ path๋ 00a0z 00003์ด ๋ฉ๋๋ค.
๐8๏ธโฃ ๊ฒฐ๋ก .
- โ
Path Enumeration ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด, ๋๊ธ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ช
ํํ๊ฒ ์ ์งํ๋ฉด์๋ ์ ๋ ฌ ๋ฐ ์กฐํ๋ฅผ ๋น ๋ฅด๊ฒ ์ํํ ์ ์์ต๋๋ค.
- โ
์ ๊ท ๋๊ธ์ด ์ถ๊ฐ๋ ๋๋, ํ์ฌ ์กด์ฌํ๋ ํ์ ๋๊ธ ์ค ๊ฐ์ฅ ํฐ path(descendantsTopPath)๋ฅผ ์ฐพ์์ ์๋ก์ด path๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- โ
์ด ๋ฐฉ์์ ๋ฌดํ Depth ๋๊ธ์์๋ ์ ๋ ฌ ์์๋ฅผ ์ ์งํ๋ฉด์ ๋น ๋ฅด๊ฒ ๋๊ธ์ ์ถ๊ฐํ ์ ์๋๋ก ๋์์ค๋๋ค.