๐Ÿ’ฟ Data

    [TIL] 104. [์ž๋ฃŒ๊ตฌ์กฐ] ์ˆœํšŒ

    ํ‚ค์›Œ๋“œ ์ˆœํšŒ(ํŠธ๋ฆฌ : ์ „์œ„/์ค‘์œ„/ํ›„์œ„, ๊ทธ๋ž˜ํ”„ : BFS/DFS) ์ˆœํšŒ(Traversal) ํŠธ๋ฆฌ, ๊ทธ๋ž˜ํ”„์™€ ๊ฐ™์ด ์—ฐ๊ฒฐ๋œ ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ ์ˆœํšŒ์˜ ๋ชฉ์  : ๋ชจ๋“  ํ˜น์€ ํŠน์ • ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ฌ๋ผ์ง„๋‹ค. [์ˆœํšŒ] ํŠธ๋ฆฌ๊ตฌ์กฐ ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ์˜ ์ˆœํšŒ๋Š” ํฌ๊ฒŒ ์ „์œ„, ์ค‘์œ„, ํ›„์œ„๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค. ์ „์œ„ : 1. Root node -> 2. Left node -> 3. Right node ์ค‘์œ„ : 1. Left node -> 2. Root node -> 3. Right node ํ›„์œ„ : 1. Left node -> 2. Right node -> 3. Root node ๋‹จ์ˆœํ•˜๊ฒŒ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์ด๋ฉด์„œ Root node์˜ ์œ„์น˜์— ๋”ฐ๋ผ ๋‚˜๋ˆ„์–ด์ง„๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค..

    [TIL] 103. [์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„

    ํ‚ค์›Œ๋“œ ๊ทธ๋ž˜ํ”„ ์ธ์ ‘ํ–‰๋ ฌ/์ธ์ ‘๋ฆฌ์ŠคํŠธ ๊ทธ๋ž˜ํ”„ ๊ทธ๋ž˜ํ”„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ vert(๋…ธ๋“œ, ์ •์ )์™€ edge(๊ฐ„์„ , ๋งํฌ)๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋Š” ๋…ธ๋“œ๊ฐ„์˜ ๊ด€๊ณ„, ํŠธ๋ฆฌ๋Š” ๋…ธ๋“œ๊ฐ„์˜ ๊ณ„์ธต์„ ํ‘œํ˜„ ๋ฐฉํ–ฅ์„ฑ(๋‹จ๋ฐฉํ–ฅ, ์–‘๋ฐฉํ–ฅ) ์ˆœ์„œ๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๊ฐ€ Leaf node๊ฐ€ ๋œ๋‹ค. ์–‘๋ฐฉํ–ฅ ํ˜•ํƒœ์˜ ๊ฒฝ์šฐ, ๊ทธ ์ฃผ๋ชฉ์ ์ด ๋…ธ๋“œ๊ฐ„์˜ ์ƒํ˜ธ ๊ตํ™˜(์„œ๋กœ ๋…ธ๋“œ ์ •๋ณด๋ฅผ ๊ณต์œ ) ๋ฌด๋ฐฉํ–ฅ์„ฑ ๋ฐฉํ–ฅ์ด ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค(์ด์›ƒ ๋…ธ๋“œ๋“ค)๋ผ๋ฆฌ ์„œ๋กœ ์ธ์ ‘ ์ˆœํ™˜์„ฑ ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์„ฑ์งˆ๋กœ, ์œ„์™€ ๊ฐ™์ด ์ˆœํ™˜์„ ํ˜•์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. [๊ทธ๋ž˜ํ”„] ์ธ์ ‘๋ฆฌ์ŠคํŠธ, ์ธ์ ‘ํ–‰๋ ฌ ๊ทธ๋ž˜ํ”„ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ธ์ ‘๋ฆฌ์ŠคํŠธ ๊ทธ๋ž˜ํ”„์˜ ํ˜•ํƒœ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„ ์ „์ฒด ๋…ธ๋“œ์˜ ๋ชฉ๋ก์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค. ํŒŒ์ด์ฌ์˜ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•œ ์˜ˆ์‹œ) class Graph: d..

    [TIL] 102. [์ž๋ฃŒ๊ตฌ์กฐ] ํ•ด์‹œํ…Œ์ด๋ธ”

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

    [CS] ์˜ค๋ฒ„ํ—ค๋“œ, ์Šคํƒ ์˜ค๋ฒ„ ํ”Œ๋กœ์šฐ

    ์˜ค๋ฒ„ํ—ค๋“œ(OverHead) ์–ด๋–ค ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ๋“ค์–ด๊ฐ€๋Š” ๊ฐ„์ ‘์ ์ธ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ํ˜น์€ ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ A๋ผ๋Š” ์ž‘์—…์„ ๋‹จ์ˆœ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์ด 10์ดˆ์ผ ๋•Œ, ์•ˆ์ •์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ B๋ผ๋Š” ์ž‘์—…์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด 15์ดˆ๊ฐ€ ๊ฑธ๋ ธ๋‹ค๋ฉด ์ด ๋•Œ์˜ `overhead = 5์ดˆ` ์ž‘์—… B๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ์ด 12์ดˆ๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด `overhead๊ฐ€ 3์ดˆ ๋‹จ์ถ•๋˜์—ˆ๋‹ค`๊ณ  ํ•œ๋‹ค. ์Šคํƒ ์˜ค๋ฒ„ ํ”Œ๋กœ์šฐ(Stack Overflow) ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ : Stack ์˜์—ญ์˜ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ณดํ†ต์€ ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ(ํ•จ์ˆ˜์—์„œ ์„ ์–ธ ํ›„ ํ• ๋‹น, ํ•จ์ˆ˜๋ฅผ ๋น ์ ธ๋‚˜์˜ค๋ฉด ํ•ด์ œ) ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋ฅผ ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ผ๊ณ  ํ•œ๋‹ค. python์—์„  ๊ธฐ๋ณธ์ ์œผ๋กœ 1000๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น

    [TIL] 101. [๋ถ„ํ•  ์ •๋ณต, ์ •๋ ฌ] ํ€ต ์ •๋ ฌ, ๋ณ‘ํ•ฉ ์ •๋ ฌ

    ํ‚ค์›Œ๋“œ ๋ถ„ํ•  ์ •๋ณต ํ€ต ์ •๋ ฌ ๋ณ‘ํ•ฉ ์ •๋ ฌ ๋ถ„ํ•  ์ •๋ณต ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ํ•˜์œ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ‘ธ๋Š” ๋ฐฉ๋ฒ• ๋ฌธ์ œ๋ฅผ ๋‚˜๋ˆ„์–ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ(๋‹จ, ๋ฌธ์ œํ•ด๊ฒฐ์„ ์œ„ํ•ด ํ•จ์ˆ˜๊ฐ€ ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ฆ๊ฐ€) ๋ถ„ํ• (Divide) : ๋ฌธ์ œ๋ฅผ ์ž‘๊ฒŒ ์ž‘๊ฒŒ ๋‚˜๋ˆ„๋Š” ๊ณผ์ • ์ •๋ณต(Conquer) : ์ž‘๊ฒŒ ๋‚˜๋ˆˆ ๋ฌธ์ œ๋ฅผ ํ•˜๋‚˜์”ฉ return ํ•˜์—ฌ ์ •๋ณต(ํŠน์ •๊ฐ’์„ ๋„์ถœ) ๋จผ์ € Divide๋ฅผ ํ•œ ํ›„ ๊ทธ์˜ ์—ญ์ˆœ์œผ๋กœ ์ž‘์€ ๋ฌธ์ œ๋ถ€ํ„ฐ ํ•˜๋‚˜ํ•˜๋‚˜ ์ •๋ณตํ•ด์„œ ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ’์„ ๋„์ถœ ๋‹จ, ๊ณผ์—ฐ ์ด ๋ฌธ์ œ๋ฅผ ๋ถ„ํ•  ์ •๋ณต์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ธ ๊ฒƒ์ด๋„ ์ƒ๊ฐํ•ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค! ์•„๋ž˜๋Š” ์žฌ๊ท€์™€ ๋ถ„ํ•  ์ •๋ณต์˜ ์ฐจ์ด(๋ถ„ํ•  ์ •๋ณต์€ ๋ณดํ†ต ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉ) [์ •๋ ฌ, ๋ถ„ํ• ์ •๋ณต] ํ€ต ์ •๋ ฌ(Quick Sort) ํ”ผ๋ฒ—(pivot)์ด๋ผ๋Š” ๊ฐ’์„ ํŠน์ •์ง€์–ด์ฃผ๊ณ (๋ณด..