๐Ÿ’ฟ Data/๋ถ€ํŠธ์บ ํ”„

๐Ÿ’ฟ Data/๋ถ€ํŠธ์บ ํ”„

    [TIL] 99. [์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ

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

    [TIL] 98. [์ž๋ฃŒ๊ตฌ์กฐ] ํŠธ๋ฆฌ

    ํ‚ค์›Œ๋“œ ๋น„์„ ํ˜• ๊ตฌ์กฐ ์ด์ง„ํŠธ๋ฆฌ ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ ํŽธํ–ฅ์ด์ง„ํŠธ๋ฆฌ [์ž๋ฃŒ๊ตฌ์กฐ] ํŠธ๋ฆฌ ๋ฃจํŠธ(root) : ํŠธ๋ฆฌ์˜ ๊ฐ€์žฅ ์œ„์ชฝ์— ์žˆ๋Š” ๋…ธ๋“œ, 1๊ฐœ๋งŒ ์กด์žฌ ๋ฆฌํ”„(leaf) : ํŠธ๋ฆฌ์˜ ๊ฐ€์žฅ ์•„๋žซ๋‹จ์— ์žˆ๋Š” ๋…ธ๋“œ(๊ฐ€์žฅ ๋์ž๋ฝ) ์„œ๋ธŒํŠธ๋ฆฌ(sub tree) : ํฐ ํŠธ๋ฆฌ์—์„œ ์ž‘์€ ํŠธ๋ฆฌ๋ฅผ ์ชผ๊ฐœ์„œ ๋ณด๋Š” ๊ฒƒ(์ž์‹๋…ธ๋“œ์ด๋ฉด์„œ ๋ถ€๋ชจ์—ญํ• ์„ ํ•˜๋Š” ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ํŠธ๋ฆฌ) ์ฐจ์ˆ˜ : ๋…ธ๋“œ๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ์ตœ๋Œ€ ์ž์‹ ๋…ธ๋“œ ์ˆ˜ ๋ ˆ๋ฒจ : ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ 0์œผ๋กœ, ์•„๋ž˜๋กœ ํ•œ๋‹จ๊ณ„์”ฉ +1 ๋†’์ด : ์ œ์ผ ๋๋‹จ ๋…ธ๋“œ์˜ ๋ ˆ๋ฒจ๊ณผ ๋ฃจํŠธ ๋…ธํŠธ ๋ ˆ๋ฒจ์˜ ์ฐจ์ด ํ˜•์ œ ๋…ธ๋“œ(sibling) : ๋ถ€๋ชจ๊ฐ€ ๊ฐ™์€ ๋…ธ๋“œ [ํŠธ๋ฆฌ] ์ด์ง„ํŠธ๋ฆฌ ๊ฐ ๋…ธ๋“œ ๋ณ„๋กœ, ์ตœ๋Œ€ 2๊ฐœ์˜ ์„œ๋ธŒ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ(left์™€ right) ํŠธ๋ฆฌ ์ค‘ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด๋ฉด์„œ ๊ฐ€์žฅ ๋งŽ์ด ํ™œ์šฉ ํฌํ™”์ด์ง„ํŠธ๋ฆฌ : ๋ชจ๋“  ๋ฆฌํ”„๋…ธ๋“œ๋“ค์ด ๋™์ผํ•œ ๋ ˆ๋ฒจ์„ ..

    [TIL] 97. ์žฌ๊ท€(Recursion)

    ํ‚ค์›Œ๋“œ ์ˆ˜ํ•™์  ์‚ฌ๊ณ  ์žฌํ˜ธ์ถœ ๋กœ์ง ์žฌ๊ท€ ํ˜ธ์ถœ -> ์Šคํƒ์˜ ๊ฐœ๋…(ํ•จ์ˆ˜ ๋‚ด๋ถ€) ๋ฒ ์ด์Šค ์ผ€์ด์Šค ์ถ”๊ฐ€ ์กฐ๊ฑด ์žฌ๊ท€(Recursion) ์ž๊ธฐ ์ž์‹ ์„ ์žฌํ˜ธ์ถœ ํ•˜๋Š” ๊ฒƒ, ์ข…๋ฃŒ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต ์ˆ˜ํ–‰ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์žฌํ˜ธ์ถœ ๋กœ์ง ๊ธฐ์–ต(์ถ”๊ฐ€ ์กฐ๊ฑด) ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๋ฉˆ์ถ”๋Š” base case(๋ฐ˜๋ณต์„ ์ค‘์ง€ํ•˜๋Š” ์กฐ๊ฑด) ํ•˜์œ„ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๋” ์ž‘์€ ํ•˜์œ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ ์žฌ๊ท€ ์˜ˆ์‹œ def sum_list(items): if len(items) == 1: return items[0] # base case -> ์žฌ๊ท€ํ•จ์ˆ˜ ์ข…๋ฃŒ else: return items[0] + sum_list(items[1:]) # ์ถ”๊ฐ€ ์กฐ๊ฑด -> ์žฌํ˜ธ์ถœ ๋กœ์ง [์žฌ๊ท€] ์กฐ๊ฑด base case(๊ธฐ๋ณธ ์ผ€์ด์Šค)๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ถ”๊ฐ€ ์กฐ๊ฑด์„ ๋‘..

    [TIL] 96. ์ถ”์ƒ ์ž๋ฃŒํ˜•(Abstract Data Type ; ADT)

    ํ‚ค์›Œ๋“œ ADT(์ถ”์ƒ์ž๋ฃŒํ˜•) ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ์Šคํƒ/ํ ์ถ”์ƒ์ž๋ฃŒํ˜•(ADT) ํŒŒ์ด์ฌ์—๋Š” ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์ธ ์ˆซ์ž, ๋ฌธ์ž์—ด, ๋ฆฌ์ŠคํŠธ, ๋”•์…”๋„ˆ๋ฆฌ ๋“ฑ์ด ์กด์žฌ ADT๋Š” ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์ฒ˜๋Ÿผ ๋กœ์ง์ด ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š” ์ž๋ฃŒ๊ฐ€ ์•„๋‹Œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•œ ๋กœ์ง ์ถ”์ƒํ™” : ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋ฐœ์ „ํ•จ์— ๋”ฐ๋ผ ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๋‚˜ ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜์˜€๊ณ  ์ด๋Ÿฐ ๋ถ€๋ถ„์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ต์‹ฌ๋งŒ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Linked-list) ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ ๋…ธ๋“œ๊ฐ€ 1. ๋ณธ์ธ์˜ ๊ฐ’, 2. ๋‹ค์Œ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ๋Š” ํ—ค๋“œ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฑฐ์ณ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด๋ณด๋‹ค ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ํฌ์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€/์ œ๊ฑฐํ•  ๋•Œ, ๋…ธ๋“œ ์‚ฌ์ด์˜ ๋งํฌ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋น ๋ฅด๋‹ค.(์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ์žฅ์ ) ๋‹จ๋ฐฉํ–ฅ, ์–‘๋ฐฉํ–ฅ, ํ™˜ํ˜• ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๊ฐ€ ์กด์žฌ ๋ฐฐ์—ด๊ณผ ๋‹ฌ..

    [TIL] 95. python ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ

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