๋ชฉ๋กDEV_IN (89)
let's get IT with DAVINA ๐ป
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cWgmFU/btr1lAsiFeo/FCOwYBs9fjqy6jA2yLjNsK/img.png)
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()๋ก๋..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b89rcC/btr1nxB1WqM/QPvBM0K7j5ybEn77oB5iM0/img.png)
TypeScript๋ฅผ ๋ฐฐ์ฐ๋ฉด์ ๊ฒฐ๊ตญ, ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ superset์ธ๋ฐ ๊ทธ๋ฌ๋ ค๋ฉด JavaScript ๊ฐ๋ ์ ์กฐ๊ธ ๋ ์ ๋ฆฌ ํ ํ์์ฑ์ ๋๊ผ๋ค๋น Prototype์ JS์ ์์ ๊ธฐ๋ฅ, ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ๊ฒ์ด๋ค!!! Prototype TS๋ ์๋์๊ฐ์ด JS์ superset์ ๋๋ค. JS์์ ์์๋, class, interface, generics, types ๋ฑ์ ์ด์ฉํด์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ์ต๋๋ค. BUT, JS๋ ์๋ฐํ ๋งํ๋ฉด proto-based๋ฅผ ํตํด ๊ฐ์ฒด ์งํฅ์ ๋๋ค. ๋ํ, ES6๋ถํฐ๋ class๋ฅผ ์ด์ฉํด์ ํ๋กํ ๋ฅผ ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค. Prototype์ ์์์ ์ํด ์ฐ์ด๋ ์์ด์ ๋๋ค! ์ฐ๋ฆฌ๊ฐ Class๋ฅผ ์ด์ฉํด์ ์์์ ๊ตฌํํ ์ ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/9eLeq/btr0NJxuFw0/t7dLlEpEZ34hp0Bkf3Nsb0/img.png)
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๋ค์ ๋ค ์ฝ์ ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ccDUUM/btr0KGsLYt9/OO37Y3pQF2Y6lxmpDJkYT0/img.png)
๊ณต๊ฐ ๋ณต์ก๋ (Space Complexity) ์๊ณ ๋ฆฌ์ฆ์ด ์ํ๋๋ ๋ฐ์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ ํ๋ก๊ทธ๋จ์ด ์๊ตฌํ๋ ๊ณต๊ฐ ⇒ ๊ณ ์ ์ ์ธ ๊ณต๊ฐ + ๊ฐ๋ณ์ ์ธ ๊ณต๊ฐ ๊ณ ์ ์ ์ธ ๊ณต๊ฐ: ์ฒ๋ฆฌํ ๋ฐ์ดํฐ์ ์์ ๋ฌด๊ดํ๊ฒ ํญ์ ์๊ตฌ๋๋ ๊ณต๊ฐ์ผ๋ก์, ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ์ฃผ์ง ์์ ๊ฐ๋ณ์ ์ธ ๊ณต๊ฐ: ์ฒ๋ฆฌํ ํ ์ดํฐ์ ์์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์๊ตฌ๋๋ ๊ณต๊ฐ์ผ๋ก์ ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ์ค! ๊ณต๊ฐ ๋ณต์ก๋ ๊ณ์ฐ์ ์๊ฐ ๋ณต์ก๋ ๊ณ์ฐ๊ณผ ๋น์ทํ๊ฒ ๋น ์ค(Big-O) ํ๊ธฐ๋ฒ์ผ๋ก ํํ ๋ณดํต ๊ณต๊ฐ ๋ณต์ก๋๋ ์๊ฐ ๋ณต์ก๋๋ณด๋ค ์ค์์ฑ์ด ๋จ์ด์ง๋ค. WHY? ์๊ฐ์ด ์ ์ผ๋ฉด์ ๋ฉ๋ชจ๋ฆฌ๊น์ง ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์๊ธฐ ๋๋ฌธ์.. BUT! ๋์ ๊ณํ๋ฒ(Dynamic Programming)๊ณผ ๊ฐ์ด ์๊ณ ๋ฆฌ์ฆ์ด๋ ํ๋์จ์ด ํ๊ฒฝ์ด ๋งค์ฐ ํ์ ๋์ด ์๋ ๊ฒฝ์ฐ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/chf6IE/btr0zEYku5H/rIYTkr3faR3s7fWZ7NYFE1/img.png)
์๊ฐ ๋ณต์ก๋ (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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ueXIX/btr0DiUtkQV/2dxXKpnwrF2wEmKV1kjXz0/img.jpg)
์๊ณ ๋ฆฌ์ฆ์ด๋? ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ผ๋ จ์ ์ ์ฐจ๋ฅผ ์ ์ํ๊ณ , ๊ณต์ํํ ํํ๋ก ํํํ ์ผ์ข ์ ๋ฌธ์ ํ์ด ๋ฐฉ๋ฒ ํ๋ก๊ทธ๋๋ฐ์์ ? input๊ฐ์ ํตํด output๊ฐ์ ์ป๊ธฐ ์ํ ๊ณ์ฐ ๊ณผ์ ์ ๋ ฅ(Input) ์๊ณ ๋ฆฌ์ฆ์ ์ถ๋ ฅ์ ํ์ํ ์๋ฃ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์์ด์ผ ํฉ๋๋ค. (๊ผญ ์ ๋ ฅ๊ฐ์ด ์์ ์๋ ์์) ์ถ๋ ฅ(Output) ์๊ณ ๋ฆฌ์ฆ์ ์คํ์ด ๋๋ฉด ์ ์ด๋ ํ ๊ฐ์ง ์ด์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋์ ์ถ๋ ฅํด์ผ ํฉ๋๋ค. ์ ํ์ฑ(Finiteness) ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ๋ช ๋ น์ด๋ฅผ ์ํํ ํ, ์ ํํ ์๊ฐ ๋ด์ ์ข ๋ฃํด์ผ ํฉ๋๋ค. ๋ช ํ์ฑ(Definiteness) ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ ๋จ๊ณ๋ ๋จ์ํ๊ณ ๋ช ํํด์ผ ํ๋ฉฐ, ๋ชจํธํด์๋ ์๋ฉ๋๋ค. ํจ์จ์ฑ(Efficiency) ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฅํ ํ ํจ์จ์ ์ด์ด์ผ ํฉ๋๋ค. (์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋๊ฐ ๋ฎ์์๋ก ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bo8Q1P/btr0p8DJZM3/XqkLm4uJWgsVP568yogtc1/img.png)
Graph๋? ์ฌ๋ฌ ๊ฐ์ ์ ๋ค์ด ์๋ก ๋ณต์กํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋ ๊ด๊ณ๋ฅผ ํํํ ์๋ฃ๊ตฌ์กฐ ๋ชฉ์ โท ๊ทธ๋ํ์ ํ์์ ํ๋์ ์ ์ ์์ ์์ํ์ฌ ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ๋ค์ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธ(ํ์)ํ๋ ๊ฒ! ๊ทธ๋ํ์ ๋ฐ์ดํฐ๋ ๋ฐฐ์ด์ฒ๋ผ ์ ๋ ฌ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์ํ๋ ์๋ฃ๋ฅผ ์ฐพ์ผ๋ ค๋ฉด, ํ๋์ฉ ๋ชจ๋ ๋ฐฉ๋ฌธํด์ผ ํจ ๋ฐฉ์ โท BFS & DFS Graph์ ๊ตฌ์กฐ ์ง์ ์ ์ธ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ, ๋ ์ ์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ์ ์ด ์์ต๋๋ค. ๊ฐ์ ์ ์ธ ๊ด๊ณ๋ผ๋ฉด, ๋ช ๊ฐ์ ์ ๊ณผ ์ ์ ๊ฑธ์ณ ์ด์ด์ง๋๋ค Graph terms ์ ์ (vertex) ๋ ธ๋(node)๋ผ๊ณ ๋ ํ๋ฉฐ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ทธ๋ํ์ ๊ธฐ๋ณธ ์์ ๊ฐ์ (edge) ์ ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ ๋๋ค. (์ ์ ์ ์ด์ด์ฃผ๋ ์ ) ์ธ์ ์ ์ (adjacent vertex) ํ๋์ ์ ์ ์์ ๊ฐ์ ์ ์ํด ์ง..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nDeNA/btr0oOZ4qMB/K4l5yjjIudCxYaRTkTyypK/img.png)
Tree ๋? ๋จ๋ฐฉํฅ ๊ทธ๋ํ์ ํ ๊ตฌ์กฐ ํ๋์ ๋ฟ๋ฆฌ๋ก๋ถํฐ ๊ฐ์ง๊ฐ ์ฌ๋ฐฉ์ผ๋ก ๋ป์ ํํ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ก ์๋์ ์๋ ํ๋ ์ด์์ ๋ฐ์ดํฐ์ ํ ๊ฐ์ ๊ฒฝ๋ก์ ํ๋์ ๋ฐฉํฅ์ผ๋ก๋ง ์ฐ๊ฒฐ๋ ๊ณ์ธต์ ์๋ฃ๊ตฌ์กฐ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ๋์ด์ํจ ์ ํ ๊ตฌ์กฐ๊ฐ ์๋๋ผ, ํ๋์ ๋ฐ์ดํฐ ์๋์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ์ ์๋ ๋น์ ํ ๊ตฌ์กฐ ํธ๋ฆฌ๊ตฌ์กฐ๋ ๊ณ์ธต์ ์ผ๋ก ํํ์ด ๋๊ณ , ์๋๋ก๋ง ๋ป์ด๋๊ฐ๊ธฐ ๋๋ฌธ์ ์ฌ์ดํด(cycle)์ด ์์ต๋๋ค. → ์ฐ๊ฒฐ ๊ทธ๋ํ(Connected Graph) ์ฌ์ดํด - ์์ ๋ ธ๋์์ ์ถ๋ฐํด ๋ค๋ฅธ ๋ ธ๋๋ฅผ ๊ฑฐ์ณ ๋ค์ ์์ ๋ ธ๋๋ก ๋์์ค๋ ๊ฒ Tree์ ๊ตฌ์กฐ์ ํน์ง Root ํธ๋ฆฌ ๊ตฌ์กฐ์ ์์์ ์ด ๋๋ ๋ ธ๋ Node ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋ ๋ชจ๋ ๊ฐ๋ณ ๋ฐ์ดํฐ Parent Node (๋ถ๋ชจ ๋ ธ๋) ๋ ๋ ธ๋๊ฐ ์ํ๊ด๊ณ๋ก ์ฐ๊ฒฐ๋์ด ์์..