๋ชฉ๋ก์ ์ฒด ๊ธ (115)
let's get IT with DAVINA ๐ป
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ssoX6/btr1zlCw00Y/kfyUWSCVIak9s9gRcWLrYK/img.png)
๋ถํธ์บ ํ๊ฐ ๋๋๊ณ ๋ง์ ์ฌ๋๋ค์ด ๋ ์ฌํ๋๊ณ , ์๋ก์ด ์ธ์ด ๊ธฐ๋ฐ์ผ๋ก, ๋ ์ด๋ ค์ด ์์ค์ ์ถ๊ฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์๋ ๋ฏ ํ์ฌ ๋๋จํด๋ณด์ธ๋ค.. ๋ฌผ๋ก ์ฝ๋ฉ์ด๋๊ฑธ ์ฒ์ ์์ํ์ ๋ "๋"๋ณด๋ค๋ ํ์ฌ์ "๋ด"๊ฐ ๋ ๋ฐ์ ํด์๋ ๋ชจ์ต์ด๊ณ , ๋ถ์ํดํ์ง ๋ง์๊ณ ๋งค์ผ ๋ค์งํ์ง๋ง ๋ ๋ด๊ฐ ๊ธฐ๋ณธ๊ธฐ๊ฐ ์ฌ์ ํ ๋ง์ด ๋ถ์กฑํ๊ตฌ๋๋ฅผ ๊ณ์ ๊นจ๋ฌ์ผ๋ฉฐ ๋ง์ด ์ข์ ํ๋ ์์ฆ์ธ๊ฒ๊ฐ๋ค.. ๊ทธ ์ด๋ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฐ๊ฑด ํ๋์ ํํ์ด์ง๋ฅผ ๋ง๋ค ๋, CRUD๋ฅผ ์ ๋ง ์๋ฒฝํ๊ฒ ์์ฝ๊ฒ ๊ตฌํํ ์ ์๋๊ฐ๋ฅผ ์ค์ค๋ก์๊ฒ ๋ฌผ์ด๋ณธ๋ค๋ฉด ๋๋ฌด๋๋ ๋น์ฐํ NO์๋ค.. ๊ทธ๋์ ๋ ๋ ์ด๋ ต๊ธฐ๋ณด๋จ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋ค์ ํ ๋ฒ ๋ฆ๊ณ ์ ํ๋ก์ ํธ ์ ๋ถํธ์บ ํ์์ ๊ณผ์ ๋ก ์คฌ๋ (๋ ์คํจํ๋) Todo App์ ๋ค์ ํ๋ฒ ๋ง๋ค์ด๋ณด๊ณ ์ ์์ํ๋ค. 1. React Component ๋ง๋ค..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ByZ0O/btr1nxISNSn/q37WGjmyR8zREWz9iF9WG1/img.png)
Module → ์ฝ๋๋ฅผ ๊ทธ ํ์ผ ๋ด๋ถ์์๋ง ํ์ ํ ์ ์๋๋ก "๋ชจ๋ํ" ํ๋ ๊ฒ! → ๋ชจ๋ํ๋ฅผ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ํ์ผ์์ ์ฝ๋๋ฅผ ๊ณต์ ํด๋ฒ๋ฆด ์ ์๋ค. (์ด๋ฆ ์ ์ธ ์ถฉ๋์ด ์ผ์ด๋ ์ ์๊ฒ ์ฐ?!?!) ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์๋ window์, node ํ๊ฒฝ์์๋ global์ ์ ์ฅ๋์ด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ! //index.html //๋ชจ๋ํํ๊ธฐ //module1.js //export default๋ ํํ์ผ์์ ํ๋๋ง ๊ฐ๋ฅ! export default function add(a,b){ return a+b; } //๊ทธ๋ฅ export export function print() { console.log("print"); } //module2.js import add from "./module1.js" import {pri..
![](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) ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฅํ ํ ํจ์จ์ ์ด์ด์ผ ํฉ๋๋ค. (์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋๊ฐ ๋ฎ์์๋ก ..