๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Daily/Today I Learned

210120_TIL (์ž๋ฃŒ๊ตฌ์กฐ - ํ•ด์‹œํ…Œ์ด๋ธ”, ๊ทธ๋ž˜ํ”„)

by joooing 2021. 1. 21.
๋ฐ˜์‘ํ˜•

๐ŸŽ ์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ


โœ”๏ธ ํ•ด์‹œํ…Œ์ด๋ธ” (์ž๋ฃŒ๊ตฌ์กฐ)
ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ๋ฉ”์„œ๋“œ ์ค‘ ์‚ฝ์ž…, ์‚ญ์ œ, ๋ฆฌ์‚ฌ์ด์ง•์„ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋“ค์„ ํŽ˜์–ด๋ถ„๊ณผ ์ง์ ‘ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•ด๋ดค๋‹ค. ์ฒ˜์Œ์— ํ•ด์‹œํ…Œ์ด๋ธ”์˜ ์ „๋ฐ˜์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ๋ฌด์ž‘์ • ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ คํ•ด์„œ ์ž๊พธ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋Š”๋ฐ, ์ž ์‹œ ๋ฆฌํ”„๋ ˆ์‹œํ•  ์‹œ๊ฐ„์„ ๊ฐ–๊ณ  ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๊ทธ๋ ค๋ณด๋‹ˆ ์กฐ๊ธˆ์”ฉ ๊ฐ์ด ์žกํžˆ๊ธฐ ์‹œ์ž‘ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํŠนํžˆ bucket์˜ ์กด์žฌ๋ฅผ ์žŠ๊ณ ์žˆ์–ด์„œ,, ๋งŽ์ด ํ•ด๋งธ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํ†ต๊ณผ๋Š” ๋์ง€๋งŒ ์™œ์ธ์ง€ ์ž˜ ์ดํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š์•„์„œ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ•ด๋ณด๋‹ˆ๊นŒ ์ˆฒ์„ ๋ดค์–ด์•ผ ํ–ˆ๋Š”๋ฐ ๋‚˜๋ฌด๋ฅผ ๋ณด๊ณ ์žˆ์—ˆ๋‹ค๋Š”๊ฑธ ๊นจ๋‹ซ๊ธฐ๋„ ํ–ˆ๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๊ผญ ๊ทธ๋ฆผ์œผ๋กœ ํ•˜๋‚˜์”ฉ ๊ทธ๋ ค๋ณด์ž..!

โœ”๏ธ ๊ทธ๋ž˜ํ”„ (์ž๋ฃŒ๊ตฌ์กฐ)
์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ธ ๊ทธ๋ž˜ํ”„(Graph)์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ–ˆ๋‹ค. ๊ทธ๋ฆผ๋งŒ ๋ดค์„๋•Œ๋Š” ๊ทธ๋ƒฅ  ๋ฐ์ดํ„ฐ๋“ค๋ผ๋ฆฌ ์—ฐ๊ฒฐ๋ผ์žˆ๋Š”๊ฑฐ๊ตฌ๋‚˜ ํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ๋ฐฉํ–ฅ์„ฑ ์—ฌ๋ถ€์— ๋”ฐ๋ผ์„œ๋„ ๊ตฌ๋ถ„๋˜๊ณ , ํŠนํžˆ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹๋„ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹๊ณผ ์ธ์ ‘ ํ–‰๋ ฌ๋ฐฉ์‹ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด์ ธ์„œ ์•Œ์•„๋ด์•ผํ• ๊ฒŒ ๋งŽ์•˜๋‹ค. ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” ๊ทธ๋ž˜ํ”„ ๋‚ด์— ๊ฐ„์„ ์ด ๋งŽ์ด ์—†๋Š” ํฌ์†Œ๊ทธ๋ž˜ํ”„์ผ ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ , ๊ฐ„์„ ์ด ๋งŽ์•„ ๊ด€๊ณ„๊ฐ€ ๋ณต์žกํ•  ๋•Œ๋Š” ์ธ์ ‘ ํ–‰๋ ฌ์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜ํ”„๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๊นŠ์ด์— ์ค‘์ ์„ ๋‘๋Š”์ง€, ๋„ˆ๋น„์— ์ค‘์ ์„ ๋‘๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์„œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ๋ญ๊ฐ€ ๋” ํšจ์œจ์ ์ธ์ง€ ์ž˜ ํŒ๋‹จํ•ด์„œ ์“ฐ๋Š”๊ฒŒ ์ •๋ง ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. 

๊ทธ๋ฆผ์œผ๋กœ ๊ทธ๋ ค๋ณธ ํ•ด์‹œํ…Œ์ด๋ธ” ๊ตฌ์กฐ

 

๐ŸŽ ๊ธฐ์–ตํ•  ๊ฒƒ


โœ”๏ธ ํ•ด์‹œ ํ•จ์ˆ˜์˜ ์„ธ ๊ฐ€์ง€ ์กฐ๊ฑด
1) ๊ฐ™์€ key → (ํ•ด์‹œํ•จ์ˆ˜) → ๊ฐ™์€ ํ•ด์‹œ๊ฐ’ : ์ผ๊ด€์„ฑ
2) ๋‹ค๋ฅธ key → (ํ•ด์‹œํ•จ์ˆ˜) → ๋‹ค๋ฅธ ํ•ด์‹œ๊ฐ’
3) ๋ฐฐ์—ดํฌ๊ธฐ๋ฅผ ์•Œ ๊ฒƒ (์œ ํšจํ•œ ์ธ๋ฑ์Šค๋งŒ ๋ฐ˜ํ™˜) 

โœ”๏ธ ํ•ด์‹œํ…Œ์ด๋ธ”์˜ ์‹œ๊ฐ„๋ณต์žก๋„ (Big-O)
์‚ฝ์ž…, ์‚ญ์ œ : ํ‰๊ท  O(1), ์ตœ์•… O(n)
๊ฒ€์ƒ‰ : ํ‰๊ท  O(1), ์ตœ์•… O(n)
๋ฆฌ์‚ฌ์ด์ง• : O(n)

 

๐ŸŽ ๋” ๊ณต๋ถ€ํ•  ๊ฒƒ


โœ”๏ธ ํŠธ๋ฆฌ๊ตฌ์กฐ (Tree)
โœ”๏ธ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ (Binary Search Tree)
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€