C++: Trie ๊ตฌํ˜„ํ•˜๊ธฐ

Trie๋ฅผ ๊ฐœ๋…๋งŒ ์•Œ๊ณ , ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณธ ์ ์ด ์—†์—ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด๋ฅผ ํ•  ๋•Œ, ์š”๊ธดํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ๋‹ค๋ฅธ ๊ณณ์—์„œ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๋™์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋ฌธ์ œ์˜ ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ •์ ์œผ๋กœ Trie๋ฅผ ํ• ๋‹นํ•ด๋‘๊ณ , ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ๋‹ค๋ฃจ๊ณ ์ž ํ•œ๋‹ค. Trie? ํŠธ๋ผ์ด (์ปดํ“จํŒ…) - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „ "A", "to", "tea", "ted", "ten", "i", "in", "inn"๋ฅผ ํ‚ค๋กœ ๋‘” ํŠธ๋ผ์ด. ์ด ์˜ˆ์ œ์—๋Š” ๋ชจ๋“  ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์ง€๋Š” ์•Š๋‹ค. (๋ฃจํŠธ ๋…ธ๋“œ์™€ 't' ๋…ธ๋“œ) ํŠธ๋ผ์ด(trie)๋Š” ์ปดํ“จํ„ฐ ko.wikipedia.org Trie๋ž€ root๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ €์žฅํ• ๋•Œ, ๊ฐ ๋…ธ๋“œ์— ์–ด๋–ค ..

C++: Priority Queue ๊ตฌํ˜„ํ•˜๊ธฐ

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ PQ(Priority Queue)๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋‹จ์ˆœํžˆ Parent, Left Child, Right Child์˜ ์ธ๋ฑ์Šค๋งŒ ์•„๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , push, pop, updaet, erase ๋ชจ๋“  ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์–ด๋–ค ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฐ„๋žตํžˆ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. PQ์— ์‚ฝ์ž…ํ•  ๋ฐ์ดํ„ฐ struct Info { int idx; int score; } PQ์— ์‚ฝ์ž…ํ•  ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ, ์‚ฌ์šฉ์ž ์ง€์ • ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๋ฅผ ๋‹ค๋ฃจ๊ณ ์ž ํ•œ๋‹ค. ์œ„ ๊ตฌ์กฐ์ฒด ์ฒ˜๋Ÿผ score๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋  ์ˆ˜ ๋„ ์žˆ๊ณ , ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ •๋ ฌ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. `idx`์˜ ๊ฒฝ์šฐ, PQ์— push, pop์„ ํ•  ๋•Œ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ, PQ์— update, e..

๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€