๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

ํ•ด์‰ฌ ํ…Œ์ด๋ธ”2

[Data Structure] ํ•ด์‰ฌ ํ…Œ์ด๋ธ”(Hash Table) ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ(feat. Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์ €๋ฒˆ ๊ธ€์—์„œ ํ•ด์‰ฌ ํ…Œ์ด๋ธ”์˜ ์ด๋ก ์— ์ด์–ด์„œ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! (ํ˜น์‹œ ์ €๋ฒˆ ๊ธ€์„ ์•ˆ๋ณด์…จ๋‹ค๋ฉด ์—ฌ๊ธฐ ๋ฅผ ํ†ตํ•ด์„œ ๋ณด๊ณ  ์™€์ฃผ์„ธ์š”~) ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ HashTable ๋จผ์ € ์ €๋Š” ํ•ด์‰ฌ ํ•จ์ˆ˜๋ฅผ Digit Folding ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— key๊ฐ’์„ String์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ถฉ๋Œ์ด ๋‚ฌ์„ ๋•Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ Chaining ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์˜€์ง€๋งŒ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋Œ€์‹  ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด typealias๋กœ ๋ณ„์นญ์„ ์„ค์ •ํ•ด์ฃผ๊ณ  ๋ฒ„ํ‚ท์„ ์ด์ค‘๋ฐฐ์—ด๋กœ ์„ ์–ธํ–ˆ์Šต๋‹ˆ๋‹ค. public struct HashTable { public typealias Key = String private typealias Element = (key:Key,value:Val.. 2021. 11. 16.
[Data Structure] ํ•ด์‰ฌ ํ…Œ์ด๋ธ”(Hash Table)์ด๋ž€? (feat. ์ด๋ก ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์šฐ๋ฆฌ๊ฐ€ ์•„์ฃผ ํ”ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํ•ด์‰ฌ ํ…Œ์ด๋ธ”, Swift๋กœ ๋งํ•˜๋ฉด ๋”•์…”๋„ˆ๋ฆฌ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ๊ฑฐ์—์š”! ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ์ฝ”๋“œ๋กœ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ์ง„์งœ ๋ณต์žกํ•˜๋”๋ผ๊ตฌ์š”. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ํ•ด์‰ฌ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ํ•ด์‰ฌ ํ…Œ์ด๋ธ”(Hash Table)์ด๋ž€? ์ •์˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ์ปดํ“จํŒ…์—์„œ ํ‚ค๋ฅผ ๊ฐ’์— ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ธ, ์—ฐ๊ด€ ๋ฐฐ์—ด ์ถ”๊ฐ€์— ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ด๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ‰์ธ(index)์„ ๋ฒ„ํ‚ท(bucket)์ด๋‚˜ ์Šฌ๋กฏ(slot)์˜ ๋ฐฐ์—ด๋กœ ๊ณ„์‚ฐํ•œ๋‹ค. - ์œ„ํ‚ค ๋ฐฑ๊ณผ - ์ฆ‰, key์™€ value๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. key๊ฐ’์œผ๋กœ value๋ฅผ ํ•œ ๋ฒˆ์— ์ฐพ์„ .. 2021. 11. 15.
728x90
๋ฐ˜์‘ํ˜•