๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Daily/Today I Learned

210122_TIL (์‹œ๊ฐ„๋ณต์žก๋„, ์ž๋ฃŒ๊ตฌ์กฐ ๋ณต์Šต)

by joooing 2021. 1. 23.
๋ฐ˜์‘ํ˜•

๐ŸŽ ์˜ค๋Š˜ ํ•œ ์ผ


โœ”๏ธ Big-O ํ‘œ๊ธฐ๋ฒ• & ์ž๋ฃŒ๊ตฌ์กฐ ์—ฐ๊ด€์ง€์–ด ์ƒ๊ฐํ•ด๋ณด๊ธฐ
๋น…์˜ค(Big-O) ํ‘œ๊ธฐ๋ฒ•์€ ๊ทธ๋ƒฅ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋Œ์•„๊ฐ€๋Š” ์ตœ์•…์˜ ์‹œ๊ฐ„์ด๊ณ , ์ƒ์ˆ˜..์ง€์ˆ˜.. ๋“ฑ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ, ๊ทธ๋ฆฌ๊ณ  ๋Œ€๋žต ์–ด๋–ค ์ฝ”๋“œ๊ฐ€ ์–ด๋Š์ •๋„์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ตฌ๋‚˜ ์ •๋„๋กœ๋งŒ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค. ๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์— ๋Œ€ํ•ด ์ข€ ๋” ๊นŠ๊ฒŒ ๋‹ค๋ฃจ๋Š” ์„ธ์…˜์„ ๋“ค์œผ๋ฉด์„œ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์–ด๋–ป๊ฒŒ ์—ฐ๊ด€๋˜๋Š”์ง€๋„ ์ž์„ธํžˆ ๋ฐฐ์›Œ ์ „์— ๋ธ”๋กœ๊น… ํ•ด๋’€๋˜ ๊ธ€์— ์ถ”๊ฐ€ํ–ˆ๊ณ , n^3์˜ ์‹œ๊ฐ„๋„ ๋น…์˜ค๋กœ ํ‘œ์‹œํ•˜๋ฉด n^2๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค๋Š” ๊ฒƒ, ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์‹œ๊ฐ„๋ณต์žก๋„์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ๋ณด๊ณ  ์–ด๋–ค ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์จ์„œ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ธ์ง€ ์—ญ์œผ๋กœ ํžŒํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ๋„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

โœ”๏ธ Data Structure ๋ณต์Šต
์ด๋ฒˆ ์ฃผ ๋™์•ˆ ๋ฐฐ์› ๋˜ ์ž๋ฃŒ๊ตฌ์กฐ๋“ค(์Šคํƒ, ํ, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ,ํ•ด์‹œํ…Œ์ด๋ธ”, ๊ทธ๋ž˜ํ”„, ํŠธ๋ฆฌ, ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ)์„ ํ•œ๋ฒˆ์”ฉ ์ƒ๊ฐํ•˜๋ฉด์„œ ๊ทธ๋ ค๋ณด๊ณ , ๊ฐ ๊ตฌ์กฐ์™€ ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ๋“ค์„ ํ•œ๋ฒˆ์”ฉ ๋” ๋ณต์Šตํ•˜๋ฉฐ ์ž‘์„ฑํ•ด๋ดค๋‹ค. ํŠนํžˆ ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ๋ชจ๊ฐ์ฝ”๋ฅผ ํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ๋ถ„๋“ค์€ ์–ด๋–ค ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋Š” ์ง€ ๋ณผ ๊ธฐํšŒ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ๋ณด๋ฉด์„œ ์ •๋ง ๋ฐฉ๋ฒ•์ด ๋‹ค์–‘ํ•˜๊ตฌ๋‚˜ ํ•˜๊ณ  ๋Š๊ผˆ๋‹ค. ๋‚˜๋Š” bucket์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํŠœํ”Œ์€ ๊ทธ๋ƒฅ ์†์„ฑ๊ณผ ๊ฐ’๋งŒ ๋„ฃ์–ด์ค˜์„œ { key1:val1, key2:val2 } ์ด๋Ÿฐ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ์–ด๋–ค ๋ถ„์€ bucket์„ ๋ฐฐ์—ด๋กœ ์‚ฌ์šฉํ•ด [ {key1:val1}, {key2:val2} ] ์ด๋Ÿฐ์‹์œผ๋กœ ํ•˜์‹œ๊ธฐ๋„ ํ•˜๊ณ , ์•„์˜ˆ ๊ฐ์ฒด bucket ์•ˆ์— ๊ฐ์ฒด tuple์„ ๋„ฃ์–ด { { key1: val1 }, { key2: val2 } } ์ด๋ ‡๊ฒŒ ํ•˜์‹  ๋ถ„๋„ ๊ณ„์…จ๋‹ค. ํŽ˜์–ด๋ถ„๊ณผ ์ฒ˜์Œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋„ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋กœ ํ‘œํ˜„ํ• ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค๊ณ  ์ด์•ผ๊ธฐ๋งŒ ํ•˜๊ณ  ํ•œ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ๋งŒ ์‹œ๋„ํ•ด๋ดค์—ˆ๋Š”๋ฐ, ๋‹ค๋“ค ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด์ฃผ์‹  ๋•์— ์‹ค์ œ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ–ˆ์„ ๋•Œ ์–ด๋–ค ๋ชจ์Šต์ธ์ง€ ๋ณผ ์ˆ˜ ์žˆ์–ด ์œ ์ตํ•œ ์‹œ๊ฐ„์ด์—ˆ๋‹ค :)

 

๐ŸŽ ๊ธฐ์–ตํ•  ๊ฒƒ


โœ”๏ธ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ ์‹œ๊ฐ„๋ณต์žก๋„
arr.filter : O(n)
arr.map : O(n)
arr.sort : O(n * log n)

โœ”๏ธ ์ธ์ ‘ ํ–‰๋ ฌ
num * num ์ €์žฅ๊ณต๊ฐ„ ํ•„์š”
์ธ๋ฑ์Šค๋ฅผ ์ง๊ด€์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• 1) index๋ฅผ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด๋ฒ„๋ฆฌ๊ฑฐ๋‚˜ 2) (num+1) * (num+1) ๋ฐฐ์—ด๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐ŸŽ ๋” ๊ณต๋ถ€ํ•  ๊ฒƒ


โœ”๏ธ Github ์˜ค๋ฅ˜ ํ•ด๊ฒฐ
โœ”๏ธ ๊นŠ์ด, ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰
โœ”๏ธ heap(์šฐ์„ ์ˆœ์œ„ํ)
โœ”๏ธ ์ˆ˜์‹ ํŒŒ์„œ ํŠธ๋ฆฌ ๊ธ€ ์ฝ์–ด๋ณด๊ธฐ
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€