[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ํŠธ๋ฆฌ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 28. 14:20

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

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ์„œ๋ก 
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 28. 14:14

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

[python] ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ ๊ตฌํ˜„ํ•˜๊ธฐ (segment tree) - ์ตœ์†Œ๊ฐ’ ๊ตฌํ•˜๊ธฐ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 15. 22:39

์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ https://www.acmicpc.net/blog/view/9 ๋ฐฑ์ค€๋‹˜ ๊ธ€ ๋ฐฐ์—ด ํฌ๊ธฐ ๊ฒฐ์ • ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ C++์˜ ๊ฒฝ์šฐ, vector ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ python์œผ๋กœ ๊ตฌํ˜„ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋˜์–ด์•ผ ํ• ์ง€ ๊ฐ€๋Š ํ•˜๊ธฐ ์œ„ํ•ด ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•ด๋ณด์ž. 2์˜ ์ œ๊ณฑ ์ˆ˜๊ฐ€ ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ์ˆ˜(n)๋กœ ์ฃผ์–ด์ง„๋‹ค๋ฉด ( ๋ถ„์„ํ•ด์•ผํ•  data ๊ฐฏ์ˆ˜๊ฐ€ 2์˜ ์ œ๊ณฑ ์ˆ˜๋ผ๋ฉด ) ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค 1/2์”ฉ ์ค„์–ด๋‚˜๊ฐ€๋ฏ€๋กœ log(n)์ด ํ•„์š”ํ•œ ์ด ๋‹จ๊ณ„(ํ™”์‚ดํ‘œ)๊ฐ€ ๋˜๊ณ  ์ „์ฒด ์ธต์˜ ๊ฐฏ์ˆ˜, ์ฆ‰ ๋†’์ด(h)๋Š” log(n)+1์ด ๋œ๋‹ค. ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋ถ€ํ„ฐ 2^(0)๊ฐœ์˜ ๋…ธ๋“œ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์ธต์ด ์ฆ๊ฐ€ํ•  ์ˆ˜๋ก 2์˜ ์ง€์ˆ˜ ๋˜ํ•œ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฝ‰์ฐฌ ์ด์ค‘ ํŠธ๋ฆฌ(full binary tree)์˜ ์ด ๋…ธ๋“œ ..