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

210108_TIL (๊ผฌ๋ฆฌ์žฌ๊ท€, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ดˆ)

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

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


โœ”๏ธ ๊ผฌ๋ฆฌ ์žฌ๊ท€ ์ •๋ฆฌํ•˜๊ธฐ
์žฌ๊ท€๋„ ์›Œ๋‚™ ์ถ”์ƒ์ ์ด๋ผ ์ฒ˜์Œ ๋ฐฐ์šธ ๋•Œ ์–ด๋ ค์› ๋Š”๋ฐ, ๊ผฌ๋ฆฌ ์žฌ๊ท€๋„ ๊ณต๋ถ€ํ•ด๋ณด๋‹ˆ ๊ธ€์„ ์ฝ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ž˜ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ž˜์„œ ์ผ๋‹จ ์‰ฌ์šด ํŒฉํ† ๋ฆฌ์–ผ ์˜ˆ์ œ๋ฅผ ๊ฐ€์ง€๊ณ , ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์ด์šฉํ•ด ๋””๋ฒ„๊น…ํ•ด๋ณด๋ฉฐ Call Stack์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š” ์ง€ ์‚ดํŽด๋ณด์•˜๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•ด๋ณด๋‹ˆ ์ฐจ์ด์ ์ด ํ™•์‹คํžˆ ๋ณด์—ฌ์„œ ๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๋ฐ”๋ฅผ ๋‹ค์Œ์— ๋ด๋„ ๋ฐ”๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ์‚ฌ๋žŒ์— ๋น„์œ ํ•ด ๋งŒํ™”(?)๋กœ ๊ทธ๋ ค๋ณด๊ธฐ๋„ ํ•˜๊ณ  ๋ธ”๋กœ๊น…๋„ ํ•ด๋‘์—ˆ๋‹ค. ์ข€ ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ธด ํ–ˆ์ง€๋งŒ, ๋•๋ถ„์— ๊ผฌ๋ฆฌ์žฌ๊ท€๊ฐ€ ์–ด๋–ป๊ฒŒ ์žฌ๊ท€์˜ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ณ  Stack Overflow ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑด์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์•„์ง ์„ค๋ช…ํ•  ๋ถ€๋ถ„๋“ค์ด ์ข€ ๋” ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„ ๋‚ด์šฉ์€ ๊ณ„์†ํ•ด์„œ ์ˆ˜์ •ํ•˜๊ณ  ๋ณด์ถฉํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

โœ”๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ดˆ ์ •๋ฆฌ 
์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ํŒ๋‹จํ•˜๋Š” ๊ธฐ์ค€์ธ ๋น…์˜ค(Big-O) ํ‘œ๊ธฐ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ์„ ํ˜• ๊ฒ€์ƒ‰, ์ด์ง„ ๊ฒ€์ƒ‰ ๋‘ ๊ฐ€์ง€์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค. ์กฐ๊ธˆ ๋” ๋‹ค๋“ฌ์–ด์„œ ์ด ๋ถ€๋ถ„๋„ ๋‚ด์ผ ๋ธ”๋กœ๊น…ํ•ด์•ผ๊ฒ ๋‹ค.

โœ”๏ธ HTTP ๊ธฐ์ดˆ ์ •๋ฆฌ
์›น ํŽ˜์ด์ง€๊ฐ€ ์–ด๋–ค ์›๋ฆฌ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๊ธฐ์ดˆ์ ์ธ ๋ถ€๋ถ„์„ ์ •๋ฆฌํ–ˆ๋‹ค. ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฃผ๊ณ  ๋ฐ›๋Š”์ง€, ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฆฌ์†Œ์Šค์˜ ์ข…๋ฅ˜์—๋Š” ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ๋ช…๋ น์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” 'HTTP ํ”„๋กœํ† ์ฝœ'์˜ ๋ฉ”์„œ๋“œ๋“ค๊ณผ ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ƒํƒœ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ๋„ ์ •๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.

 

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


โœ”๏ธ ์ผ๋ฐ˜ ์žฌ๊ท€ vs ๊ผฌ๋ฆฌ ์žฌ๊ท€
์ผ๋ฐ˜ ์žฌ๊ท€ : ๊ฐ’์„ ๋ฐ›์œผ๋ฉด, ๊ทธ ๊ฐ’์— ์—ฐ์‚ฐ์„ ํ•˜๊ณ  ๋‹ค๋ฅธ ํ•จ์ˆ˜์—๊ฒŒ ์ „๋‹ฌ
๊ผฌ๋ฆฌ ์žฌ๊ท€ : ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๊ณ  ๊ฐ’์„ ์ „๋‹ฌ (ํ˜ธ์ถœ ๋‹นํ•œ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ = ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ)

โœ”๏ธ ์„ ํ˜• ๊ฒ€์ƒ‰ (linear search) vs ์ด์ง„ ๊ฒ€์ƒ‰ (binary search)
์„ ํ˜• ๊ฒ€์ƒ‰ (linear search) : ๋ฐฐ์—ด์—์„œ ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ๋งจ์•ž๋ถ€ํ„ฐ ์Šค์บ”ํ•ด ์ˆœ์„œ๋Œ€๋กœ ๊ฒ€์ƒ‰ (์ตœ์•…์˜ ๊ฒฝ์šฐ O(N))
์ด์ง„ ๊ฒ€์ƒ‰ (binary search) : ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ์›ํ•˜๋Š” ๊ฐ’๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ๋ฒ”์œ„๋ฅผ ๋ฐ˜์”ฉ ์ค„์—ฌ๊ฐ€๋ฉฐ ๊ฒ€์ƒ‰ (์ตœ์•…์˜ ๊ฒฝ์šฐ (log2n)+1)

 

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


โœ”๏ธ ์›น ๊ตฌ์„ฑ ์š”์†Œ
โœ”๏ธ Map, Set, WeakMap, WeakSet

 

 

โœ๏ธ ๋ธ”๋กœ๊น…์„ ์–ด๋–ค ์‹์œผ๋กœ ํ•˜๋ฉด ์ข‹์„์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ๋ฅผ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ์„ธ์…˜์ด ์žˆ์—ˆ๋‹ค. ์ข‹์€ ์˜ˆ์‹œ๋ผ๊ณ  ๋ช‡๋ช‡ ๋ธ”๋กœ๊ทธ ๋งํฌ๋ฅผ ์ฃผ์…”์„œ ํ•˜๋‚˜์”ฉ ๋“ค์–ด๊ฐ€๋ณด๋ฉฐ ๋‚˜๋„ ๋ธ”๋กœ๊น…ํ•  ๋•Œ ์–ด๋–ค ์ ์„ ๊ณ ๋ คํ•ด์•ผํ•˜๊ณ , ์–ด๋–ค ์ ์„ ๊ฐœ์„ ํ•ด์•ผํ•  ์ง€ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ผ๋‹จ์€ TIL์— ์ œ๋ชฉ์„ ๋‹ค๋Š” ๊ฒƒ๋ถ€ํ„ฐ ๊ฐœ์„ ํ•ด๋ณด๋ คํ•œ๋‹ค. ์•ˆ๊ทธ๋ž˜๋„ ๋‚˜๋„ ๋ณต์Šตํ•  ๋•Œ ๋‚ด ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด์„œ ํ•˜๋Š”๋ฐ, ๊ณ„์† ๋Œ€์ถฉ ๋ฉฐ์น ์ฏค์— ์ด๊ฑธํ–ˆ๋˜ ๊ฒƒ๊ฐ™์€๋ฐ..? ํ•˜๋ฉด์„œ TIL๋ฅผ ๋’ค์ ธ๋ณด๊ณค ํ–ˆ๋˜ ๊ฒƒ๊ฐ™๋‹ค. ์™œ ์ œ๋ชฉ์„ ๋‹ฌ ์ƒ๊ฐ์„ ๋ชปํ–ˆ์„๊นŒ ๐Ÿคญ ์˜ค๋Š˜๋ถ€ํ„ด ์ฐพ์•„๋ณด๊ธฐ ํŽธํ•˜๊ฒŒ ๊ฐ„๋‹จํžˆ ์ œ๋ชฉ์„ ๋‹ฌ์•„๋‘ฌ์•ผ๊ฒ ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€