๋ชฉ๋กDEV_IN (89)

let's get IT with DAVINA ๐Ÿ’ป

This

JS์—์„œ this๋Š” ์™œ ์–ด๋ ค์šธ๊นŒ? ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์—์„œ this๋Š” ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด ์ž๊ธฐ ์ž์‹ ์„ ๋œปํ•˜์ง€๋งŒ, JS์—์„  ๋‹ค๋ฅด๋‹ค! JS์—์„œ this๋Š” ์š”์ˆ ๋žจํ”„ ์ง€๋‹ˆ๋‹ค!! ๋ˆ„๊ฐ€ ํ˜ธ์ถœํ–ˆ๋ƒ์— ๋”ฐ๋ผ ๋ˆ„๊ตฌ์˜ ์ง€๋‹ˆ์ธ์ง€ ๋™์ ์œผ๋กœ ๋‹ฌ๋ผ์ง„๋‹ค. This 1. ๋ธŒ๋ผ์šฐ์ € ์ „์—ญ์Šค์ฝ”ํ”„์—์„œ console.log(this) result : window ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ด reason : ๋ธŒ๋ผ์šฐ์ € ์ „์—ญ ๊ฐ์ฒด๊ฐ€ window์ด๊ธฐ ๋•Œ๋ฌธ์— 2. function(){} ๋‚ด๋ถ€์—์„œ this ํ˜ธ์ถœ result : window ๊ฐ์ฒด๊ฐ€ ๋‚˜์˜ด reason : 'ํ•จ์ˆ˜'๋Š” ์„ ์–ธ ์‹œ window ๊ฐ์ฒด์— '๋“ฑ๋ก'๋จ. ์ด ํ•จ์ˆ˜๋Š” class์— ์†ํ•œ ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ , ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ ํ˜ธ์ถœ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— this๊ฐ€ ์†ํ•œ ๊ณณ์€ window ๊ฐ์ฒด์ž„. ๋”ฐ๋ผ์„œ, window.simpleFun()๋กœ๋„..

DEV_IN/JavaScript 2023. 2. 28. 18:35
Prototype

TypeScript๋ฅผ ๋ฐฐ์šฐ๋ฉด์„œ ๊ฒฐ๊ตญ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ superset์ธ๋ฐ ๊ทธ๋Ÿฌ๋ ค๋ฉด JavaScript ๊ฐœ๋…์„ ์กฐ๊ธˆ ๋” ์ •๋ฆฌ ํ•  ํ•„์š”์„ฑ์„ ๋Š๊ผˆ๋‹ค๋นˆ Prototype์€ JS์˜ ์ƒ์† ๊ธฐ๋Šฅ, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค!!! Prototype TS๋Š” ์•„๋ž˜์™€๊ฐ™์ด JS์˜ superset์ž…๋‹ˆ๋‹ค. JS์—์„  ์—†์—ˆ๋˜, class, interface, generics, types ๋“ฑ์„ ์ด์šฉํ•ด์„œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. BUT, JS๋„ ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด proto-based๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ์ง€ํ–ฅ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, ES6๋ถ€ํ„ฐ๋Š” class๋ฅผ ์ด์šฉํ•ด์„œ ํ”„๋กœํ† ๋ฅผ ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Prototype์€ ์ƒ์†์„ ์œ„ํ•ด ์“ฐ์ด๋Š” ์•„์ด์ž…๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๊ฐ€ Class๋ฅผ ์ด์šฉํ•ด์„œ ์ƒ์†์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ..

DEV_IN/JavaScript 2023. 2. 28. 17:24
DOM

TypeScript ์ ์šฉํ•˜๋Š” ์ž‘์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“œ๋ ค๋‹ค๋ณด๋‹ˆ ํ•ญ์ƒ React๋งŒ ์‚ฌ์šฉํ•ด์™€์„œ ๊ฐ•์˜๋ฅผ ๋“ฃ๋Š”๋ฐ DOM ๊ฐœ๋…์ด ๋‚˜์˜ค๋ฉด ๋ฉ˜๋ถ•์ด ์™”๋‹ค.. ๊ทธ๋Ÿฐ ๋‚ด ๋ง˜์„ ์•Œ์•˜๋Š”์ง€ DOM ๊ด€๋ จ ์˜์ƒ์„ ์˜ฌ๋ ค์ฃผ์‹  ๊ฐ•์‚ฌ๋‹˜ ๋•๋ถ„์— ์ •๋ฆฌ๋ฅผ ํ•ด๋ณธ๋Œœ.. DOM Document Object Model์˜ ์•ฝ์ž HTML- ์›นํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋งˆํฌ์—… ์–ธ์–ด JavaScript- HTML๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ตฌ์กฐ์— ๊ธฐ๋Šฅ์„ ๋”ํ• ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด DOM- HTML ์š”์†Œ๋ฅผ Object์ฒ˜๋Ÿผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ธ DOM์€ document๊ฐ์ฒด๋ฅผ ํ†ตํ•ด HTML์— ์ ‘๊ทผ BOM(Browser Object Model)์ด window ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €์— ์ ‘๊ทผ (window๊ฐ์ฒด๊ฐ€ document๊ฐ์ฒด๋ณด๋‹ค ์ƒ์œ„ ๊ฐœ๋…) ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋Ÿฐ HTML Tag๋“ค์„ ๋‹ค ์ฝ์„ ..

DEV_IN/HTML 2023. 2. 27. 15:33
์•Œ๊ณ ๋ฆฌ์ฆ˜/๊ณต๊ฐ„ ๋ณต์žก๋„

๊ณต๊ฐ„ ๋ณต์žก๋„ (Space Complexity) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ˆ˜ํ–‰๋˜๋Š” ๋ฐ์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ด๋Ÿ‰ ํ”„๋กœ๊ทธ๋žจ์ด ์š”๊ตฌํ•˜๋Š” ๊ณต๊ฐ„ ⇒ ๊ณ ์ •์ ์ธ ๊ณต๊ฐ„ + ๊ฐ€๋ณ€์ ์ธ ๊ณต๊ฐ„ ๊ณ ์ •์ ์ธ ๊ณต๊ฐ„: ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ์˜ ์–‘์— ๋ฌด๊ด€ํ•˜๊ฒŒ ํ•ญ์ƒ ์š”๊ตฌ๋˜๋Š” ๊ณต๊ฐ„์œผ๋กœ์„œ, ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ ๊ฐ€๋ณ€์ ์ธ ๊ณต๊ฐ„: ์ฒ˜๋ฆฌํ•  ํ…Œ์ดํ„ฐ์˜ ์–‘์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์š”๊ตฌ๋˜๋Š” ๊ณต๊ฐ„์œผ๋กœ์„œ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ์คŒ! ๊ณต๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ์€ ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋น… ์˜ค(Big-O) ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ‘œํ˜„ ๋ณดํ†ต ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๋ณด๋‹ค ์ค‘์š”์„ฑ์ด ๋–จ์–ด์ง„๋‹ค. WHY? ์‹œ๊ฐ„์ด ์ ์œผ๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ๊นŒ์ง€ ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—.. BUT! ๋™์  ๊ณ„ํš๋ฒ•(Dynamic Programming)๊ณผ ๊ฐ™์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ํ•˜๋“œ์›จ์–ด ํ™˜๊ฒฝ์ด ๋งค์šฐ ํ•œ์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ..

DEV_IN/Algorithm 2023. 2. 24. 19:48
์•Œ๊ณ ๋ฆฌ์ฆ˜/์‹œ๊ฐ„ ๋ณต์žก๋„

์‹œ๊ฐ„ ๋ณต์žก๋„ (Time Complextity) ์ž…๋ ฅ๊ฐ’์ด ์ปค์ง์— ๋”ฐ๋ผ ์ฆ๊ฐ€ํ•˜๋Š” ์‹œ๊ฐ„์˜ ๋น„์œจ์„ ์ตœ์†Œํ™”ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž…๋ ฅ์˜ ํฌ๊ธฐ์™€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„ Big-O ํ‘œ๊ธฐ๋ฒ• ์ฃผ์–ด์ง„ ์‹์„ ๊ฐ’์ด ๊ฐ€์žฅ ํฐ ๋Œ€ํ‘œํ•ญ๋งŒ ๋‚จ๊ฒจ์„œ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ• Big-O(๋น…-์˜ค) ์ตœ์•…์˜ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๊ณผ์ •์—์„œ “์ด ์ •๋„ ์‹œ๊ฐ„๊นŒ์ง€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค”๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค! Big-Ω(๋น…-์˜ค๋ฉ”๊ฐ€) ์ตœ์„ ์˜ ๊ฒฝ์šฐ Big-θ(๋น…-์„ธํƒ€) ์ค‘๊ฐ„(ํ‰๊ท )์˜ ๊ฒฝ์šฐ O(1) constant complexity ์ž…๋ ฅ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๋”๋ผ๋„ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ์ž…๋ ฅ๊ฐ’์˜ ํฌ๊ธฐ์™€ ๊ด€๊ณ„์—†์ด, ์ฆ‰์‹œ ์ถœ๋ ฅ๊ฐ’์„ ์–ป์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. function O_1_algorithm(arr, index) { return arr[index]; } let arr = [1, 2..

DEV_IN/Algorithm 2023. 2. 24. 19:41
์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?

์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ผ๋ จ์˜ ์ ˆ์ฐจ๋ฅผ ์ •์˜ํ•˜๊ณ , ๊ณต์‹ํ™”ํ•œ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•œ ์ผ์ข…์˜ ๋ฌธ์ œ ํ’€์ด ๋ฐฉ๋ฒ• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„ ? input๊ฐ’์„ ํ†ตํ•ด output๊ฐ’์„ ์–ป๊ธฐ ์œ„ํ•œ ๊ณ„์‚ฐ ๊ณผ์ • ์ž…๋ ฅ(Input) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ถœ๋ ฅ์— ํ•„์š”ํ•œ ์ž๋ฃŒ๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๊ผญ ์ž…๋ ฅ๊ฐ’์ด ์—†์„ ์ˆ˜๋„ ์žˆ์Œ) ์ถœ๋ ฅ(Output) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‹คํ–‰์ด ๋˜๋ฉด ์ ์–ด๋„ ํ•œ ๊ฐ€์ง€ ์ด์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ถœ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ ํ•œ์„ฑ(Finiteness) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์œ ํ•œํ•œ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„, ์œ ํ•œํ•œ ์‹œ๊ฐ„ ๋‚ด์— ์ข…๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ช…ํ™•์„ฑ(Definiteness) ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐ ๋‹จ๊ณ„๋Š” ๋‹จ์ˆœํ•˜๊ณ  ๋ช…ํ™•ํ•ด์•ผ ํ•˜๋ฉฐ, ๋ชจํ˜ธํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ํšจ์œจ์„ฑ(Efficiency) ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ€๋Šฅํ•œ ํ•œ ํšจ์œจ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ..

DEV_IN/Algorithm 2023. 2. 24. 19:28
์ž๋ฃŒ๊ตฌ์กฐ/๋น„์„ ํ˜•๊ตฌ์กฐ/๊ทธ๋ž˜ํ”„

Graph๋ž€? ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ ๋“ค์ด ์„œ๋กœ ๋ณต์žกํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ๋ชฉ์  โ–ท ๊ทธ๋ž˜ํ”„์˜ ํƒ์ƒ‰์€ ํ•˜๋‚˜์˜ ์ •์ ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  ์ •์ ๋“ค์„ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธ(ํƒ์ƒ‰)ํ•˜๋Š” ๊ฒƒ! ๊ทธ๋ž˜ํ”„์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ์ž๋ฃŒ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด, ํ•˜๋‚˜์”ฉ ๋ชจ๋‘ ๋ฐฉ๋ฌธํ•ด์•ผ ํ•จ ๋ฐฉ์‹ โ–ท BFS & DFS Graph์˜ ๊ตฌ์กฐ ์ง์ ‘์ ์ธ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ๋‘ ์  ์‚ฌ์ด๋ฅผ ์ด์–ด์ฃผ๋Š” ์„ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„์ ‘์ ์ธ ๊ด€๊ณ„๋ผ๋ฉด, ๋ช‡ ๊ฐœ์˜ ์ ๊ณผ ์„ ์— ๊ฑธ์ณ ์ด์–ด์ง‘๋‹ˆ๋‹ค Graph terms ์ •์  (vertex) ๋…ธ๋“œ(node)๋ผ๊ณ ๋„ ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ทธ๋ž˜ํ”„์˜ ๊ธฐ๋ณธ ์›์†Œ ๊ฐ„์„  (edge) ์ •์  ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. (์ •์ ์„ ์ด์–ด์ฃผ๋Š” ์„ ) ์ธ์ ‘ ์ •์  (adjacent vertex) ํ•˜๋‚˜์˜ ์ •์ ์—์„œ ๊ฐ„์„ ์— ์˜ํ•ด ์ง..

DEV_IN/Algorithm 2023. 2. 23. 02:47
์ž๋ฃŒ๊ตฌ์กฐ/๋น„์„ ํ˜•๊ตฌ์กฐ/ํŠธ๋ฆฌ

Tree ๋ž€? ๋‹จ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ํ•œ ๊ตฌ์กฐ ํ•˜๋‚˜์˜ ๋ฟŒ๋ฆฌ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ง€๊ฐ€ ์‚ฌ๋ฐฉ์œผ๋กœ ๋ป—์€ ํ˜•ํƒœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋กœ ์•„๋ž˜์— ์žˆ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ์— ํ•œ ๊ฐœ์˜ ๊ฒฝ๋กœ์™€ ํ•˜๋‚˜์˜ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์—ฐ๊ฒฐ๋œ ๊ณ„์ธต์  ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋‚˜์—ด์‹œํ‚จ ์„ ํ˜• ๊ตฌ์กฐ๊ฐ€ ์•„๋‹ˆ๋ผ, ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ์•„๋ž˜์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๋น„์„ ํ˜• ๊ตฌ์กฐ ํŠธ๋ฆฌ๊ตฌ์กฐ๋Š” ๊ณ„์ธต์ ์œผ๋กœ ํ‘œํ˜„์ด ๋˜๊ณ , ์•„๋ž˜๋กœ๋งŒ ๋ป—์–ด๋‚˜๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํด(cycle)์ด ์—†์Šต๋‹ˆ๋‹ค. → ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„(Connected Graph) ์‚ฌ์ดํด - ์‹œ์ž‘ ๋…ธ๋“œ์—์„œ ์ถœ๋ฐœํ•ด ๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ ๋‹ค์‹œ ์‹œ์ž‘ ๋…ธ๋“œ๋กœ ๋Œ์•„์˜ค๋Š” ๊ฒƒ Tree์˜ ๊ตฌ์กฐ์™€ ํŠน์ง• Root ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ์‹œ์ž‘์ ์ด ๋˜๋Š” ๋…ธ๋“œ Node ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋Š” ๋ชจ๋“  ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ Parent Node (๋ถ€๋ชจ ๋…ธ๋“œ) ๋‘ ๋…ธ๋“œ๊ฐ€ ์ƒํ•˜๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์„..

DEV_IN/Algorithm 2023. 2. 23. 01:55