Home > Backend Development > ๐Ÿ“š[Backend Development] Path Enumeration ๋ฐฉ์‹์—์„œ ๋Œ“๊ธ€์˜ ๊ฒฝ๋กœ(Path) ๊ฒฐ์ • ๊ณผ์ •.

๐Ÿ“š[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 ๋Œ“๊ธ€์—์„œ๋„ ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋น ๋ฅด๊ฒŒ ๋Œ“๊ธ€์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.