๐Ÿ’ฟ Data

    [TIL] 100. [์•Œ๊ณ ๋ฆฌ์ฆ˜] ํƒ์ƒ‰

    ํ‚ค์›Œ๋“œ ํƒ์ƒ‰ ์„ ํ˜•ํƒ์ƒ‰ ์ด์ง„ํƒ์ƒ‰ [์•Œ๊ณ ๋ฆฌ์ฆ˜] ํƒ์ƒ‰ ์ž๋ฃŒ๋ฅผ ํ•˜๋‚˜์”ฉ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฌธ์ œ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผํ•œ๋‹ค. [ํƒ์ƒ‰] ์„ ํ˜•ํƒ์ƒ‰(Linear Search) ๊ธฐ๋ณธ์ ์ธ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•œ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ชจ๋‘ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ def linear_search(arr, value): for i in range(len(arr)): if arr[i] == value: return i [ํƒ์ƒ‰] ์ด์ง„ํƒ์ƒ‰(Binary Search) ํƒ์ƒ‰์„ ํ•  ๋•Œ, ๋ฐ˜์”ฉ ์ค„์—ฌ๋‚˜๊ฐ€๋ฉด์„œ ํƒ์ƒ‰ ๋งˆ์น˜ ์—…๋‹ค์šด ๊ฒŒ์ž„์—์„œ ๊ฐ€์šด๋ฐ ๊ฐ’์„ ๋งํ•˜๋ฉด ์ ์  ์ขํ˜€๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹ ๋‹จ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ์—๋งŒ ์ž‘๋™ํ•œ๋‹ค. O(logn)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค.(๊ทธ๋ฃน์„ 2๊ฐœ์”ฉ ๋‚˜๋ˆ„๋ฉด์„œ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ) def binary_search(arr, valu..

    [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. ๋‹ค์Œ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ๋Š” ํ—ค๋“œ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฑฐ์ณ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด๋ณด๋‹ค ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ํฌ์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€/์ œ๊ฑฐํ•  ๋•Œ, ๋…ธ๋“œ ์‚ฌ์ด์˜ ๋งํฌ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋น ๋ฅด๋‹ค.(์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ์žฅ์ ) ๋‹จ๋ฐฉํ–ฅ, ์–‘๋ฐฉํ–ฅ, ํ™˜ํ˜• ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๊ฐ€ ์กด์žฌ ๋ฐฐ์—ด๊ณผ ๋‹ฌ..