๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ Computer Science/Data Structure

[Data Structure] Trie๋ž€? (feat. ์ด๋ก )

by Fomagran ๐Ÿ’ป 2022. 7. 29.
728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค!

 

์˜ค๋Š˜์€ ์—ฐ๊ฒฐ๋œ ๋ฌธ์ž์—ด์„ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•ด ๊ฒ€์ƒ‰์„ ํšจ์œจ์ ์œผ๋กœ ๋„์™€์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ธ ํŠธ๋ผ์ด(Trie)์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

 

๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~


Trie๋ž€?

 

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

 

์ฆ‰, ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ์—ฐ๊ฒฐ๋œ ๋ฌธ์ž์—ด์„ ์ฐจ๋ก€๋กœ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ž…๋‹ˆ๋‹ค.

 

์ด๋ฆ„์˜ ์œ ๋ž˜๋Š” ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŠธ๋ฆฌ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋‹ค๊ฐ€ ์‹ค์ œ ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์ด๋ฆ„์ด ํ—ท๊ฐˆ๋ ค์„œ ํŠธ๋ผ์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ฒŒ ๋˜์—ˆ๋‹ค๊ณ  ํ•˜๋„ค์š”.

 

์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ์‰ฌ์šธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 


Example

 

1. ๊ฒ€์ƒ‰

 

์ผ์ƒ ์ƒํ™œ ์†์˜ ์˜ˆ์ œ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•  ๋•Œ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ฒ€์ƒ‰ํ•œ ๋‹จ์–ด ๋’ค ๋…ธ๋“œ์— ์–ด๋–ค ๊ธ€์ž๋“ค์ด ์žˆ๋Š”์ง€ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์ด ๊ทธ ๋’ค๋กœ ์ด์–ด์ง€๋Š” ๋‹จ์–ด ํ˜น์€ ๋ฌธ์ž์—ด์ด ๋œจ๋Š” ๊ฒƒ์ด์ฃ .

 

 

2. ์ŠคํŽ ๋ง ์ฒดํฌ

 

์‚ฌ์ „ ์†์˜ ๋ชจ๋“  ๋‹จ์–ด๋“ค์„ ํŠธ๋ผ์ด ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ €์žฅํ•ด ๋†“์•˜๋‹ค๋ฉด ํ•ด๋‹น ๋‹จ์–ด๊ฐ€ ์‚ฌ์ „ ์†์— ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์ „ ์†์— ์žˆ์ง€ ์•Š์€ ๋‹จ์–ด๋ผ๋ฉด ์ŠคํŽ ๋ง์ด ํ‹€๋ฆฐ ๊ฒŒ ์•„๋‹Œ์ง€ ๋น ๋ฅด๊ฒŒ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์ฃ .

 

 


 

 

Search

 

๋งŒ์•ฝ ๋‹จ์–ด๊ฐ€ "Face", "Fat", "Farm", "From" ์ด๋ ‡๊ฒŒ ์žˆ๋‹ค๋ฉด ํŠธ๋ผ์ด์—” ์–ด๋–ป๊ฒŒ ์ €์žฅ๋ ๊นŒ์š”?

 

์•„๋ž˜์™€ ๊ฐ™์ด ์ €์žฅ๋  ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

 

 

๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ ์ฐพ๊ณ  ์‹ถ์€ ๋‹จ์–ด๊ฐ€ "Fame" ์ด๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ• ๊นŒ์š”?

 

๋จผ์ € ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ๋ ˆ๋ฒจ์„ ์‚ดํŽด๋ด์•ผ๊ฒ ์ฃ ? F๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ F์˜ ์ž์‹๋“ค์„ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

๋‘ ๋ฒˆ์งธ ๋ ˆ๋ฒจ์ธ "A"์™€ "R"์„ ํƒ์ƒ‰ํ•œ ๊ฒฐ๊ณผ 'Fame'์˜ ๋‘ ๋ฒˆ์งธ ๊ธ€์ž์ธ "A"๊ฐ€ ์žˆ์ฃ ? A์˜ ์ž์‹๋“ค์„ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

 

 

์„ธ ๋ฒˆ์งธ ๋ ˆ๋ฒจ์—” 'Fame'์˜ ์„ธ ๋ฒˆ์งธ ๊ธ€์ž์ด m์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

๊ณ ๋กœ 'Fame'์€ ํ˜„์žฌ ํŠธ๋ผ์ด์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋‹จ์–ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 


Insert

 

์œ„์™€ ๊ฐ™์ด ๋‹จ์–ด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์— ํŠธ๋ผ์ด์— ์ถ”๊ฐ€ํ•ด ์ค˜์•ผ๊ฒ ์ฃ ?

 

์œ„์™€ ๊ฐ™์ด ์ž์‹๋“ค์„ ์‚ดํŽด ๋ณด์•˜๋Š”๋ฐ ํ•ด๋‹น ๊ธ€์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์ž์‹๋“ค์— ์ถ”๊ฐ€ํ•ด ์ค๋‹ˆ๋‹ค.

 

 

 

๊ทธ ๋‹ค์Œ 'M'์˜ ์ž์‹์œผ๋กœ 'Fame'์˜ ๋‹ค์Œ ๊ธ€์ž์ธ 'E'๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค๋‹ˆ๋‹ค.


Complexity

 

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๋‹จ์–ด์˜ ๊ฐฏ์ˆ˜๊ฐ€ n, ๋‹จ์–ด์˜ ํ‰๊ท  ๊ธธ์ด๊ฐ€ l์ด๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ ์‚ฝ์ž…์€ O(n*l)์ด ๋ฉ๋‹ˆ๋‹ค.

 

์•„๋ฌด๋ฆฌ ๊ธด ๋ฌธ์žฅ์ด ์žˆ๋”๋ผ๋„ ์›ํ•˜๋Š” ํ•œ ๋‹จ์–ด๋ฅผ ์ฐพ๋Š”๋ฐ O(n)๋งŒ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ ์ธ ์ธก๋ฉด์—์„œ ํšจ์œจ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” ํ—ˆ์šฉ๋˜๋Š” ๊ธ€์ž์˜ ๊ฐฏ์ˆ˜ n, (ex: alphabet 26๊ธ€์ž, ํ•œ๊ธ€ 24๊ธ€์ž)

 

๋‹จ์–ด์˜ ํ‰๊ท  ๊ธธ์ด l, ๊ฐ ์ž์‹๋“ค์˜ ํ‰๊ท  ๊ฐฏ์ˆ˜ t ๋ผ๊ณ  ํ•˜๋ฉด O(n*l*t)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

 

๊ณ ๋กœ ๊ณต๊ฐ„์ ์ธ ์ธก๋ฉด์—์„œ๋Š” ๋น„ํšจ์œจ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€