์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ๋ฐ๋ธ์ฝ์ค
- Flex
- history api
- ์๊ณ ๋ฆฌ์ฆ
- Props
- CSS
- useEffect
- REACT
- Gatsby
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ๋ก๊ทธ๋๋จธ์ค
- fetch API
- float
- ๋ฐ๋ธ์ฝ์ค3๊ธฐ
- position
- ํ๋ก ํธ์๋
- ๋ธ๋ก๊ทธ
- ์ฝ๋ฉํ ์คํธ
- useRef
- Today
- Total
Daehyunii's Dev-blog
23 ๋์ ํ๋ก๊ทธ๋๋ฐ ๋ณธ๋ฌธ
23 ๋์ ํ๋ก๊ทธ๋๋ฐ
Daehyunii 2022. 8. 21. 17:2923.1 ๋์ ํ๋ก๊ทธ๋๋ฐ
๋์ ํ๋ก๊ทธ๋๋ฐ์ด๋ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ ํ์ ๋ฌธ์ ์ ๋ชจ์์ผ๋ก ๋ถ๋ฆฌํด์ ๊ฐ ํ์ ๋ฌธ์ ๋ค์ ํ์ด์ ๊ทธ ๋ต์ ์ ์ฅํ๊ณ ํ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ์์ด๋ค. ์ฆ, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ์ฌ์ฉํ ์ ์๋ ์ ๊ทผ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค. ๋๋ถ๋ถ์ ๋ฌธ์ ๋ฅผ ๋์ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํด๊ฒฐ ํ ์๋ ์์ง๋ง, ๋์ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ๋ค์ ๋ํด ๋์ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒฝ์ฐ ์ฑ๋ฅ์ ์์ด์ ์์ฃผ ํฐ ์ฐจ์ด๋ฅผ ๊ฐ์ ธ์จ๋ค. ๋ค์ ๋งํด ๋๋ถ๋ถ์ ๋ฌธ์ ์ ์ ์ฉํ ์ ์๋ ๊ฒ์ ์๋์ง๋ง ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์ฝ๋์ ์๋๋ฅผ ์ ๋ง ๋ง์ด ์ฌ๋ฆด ์ ์๋ค.
23.2 ๋์ ํ๋ก๊ทธ๋๋ฐ ํ์ฉ ๊ฐ๋ฅ ์ํฉ
๋์ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํ ์ ์๋์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด์๋ ๋ ๊ฐ์ง ์กฐ๊ฑด์ ํ์ธํด์ผ ํ๋ค.
1) ๋ฐ๋ณต๋๋ ํ์ ๋ฌธ์ ๊ฐ ์กด์ฌํ๋๊ฐ?
2) ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ๊ฐ ์กด์ฌํ๋๊ฐ?
๋ฐ๋ณต๋๋ ํ์ ๋ฌธ์ ๋ ํด๊ฒฐ์ด ํ์ํ ๋ฌธ์ ์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์ค์ฒฉ๋๋ ํ์ ๋ฌธ์ ๋ค์ด ์์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ์ด ๋ง์ ํ ๋ฌธ์ ๋ฅผ ๋ ์์ ๋ฌธ์ ๋ค๋ก ๋๋ ์ ์๊ณ , ๊ทธ ์กฐ๊ฐ๋ค ์ค ์ผ๋ถ๊ฐ ์ฌํ์ฉ ๊ฐ๋ฅํ๋ค๋ ๋ง์ด๋ค. ๊ฐ๊ฐ์ ์กฐ๊ฐ์ด ๋ค๋ฅธ ๋ชจ์ต์ด๋ฉด ์๋๊ณ ์ฌ๋ฌ ๋ฒ ์ฌ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค. ๋ํ์ ์ธ ์๋ก ํผ๋ณด๋์น ์์ด์ ๋ค ์ ์๋ค.
์ต์ ๋ถ๋ถ ๊ตฌ์กฐ๋ ํ์ ๋ฌธ์ ์ ์ต์ ํด๋ต์ ํตํด์ ๋ ํฐ ๋ฒ์ฃผ์ ๋ฌธ์ ์ ์ต์ ํด๋ต์ ๊ตฌ์ฑํ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. ์๋ฅผ ๋ค๋ฉด ์์ธ์์ ๋ถ์ฐ์ ๊ฐ๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํด์ผ ํ๋ค๊ณ ํด๋ณด์. ์ด ๋ฌธ์ ๋ (์์ธ์์ ์ฒ์์ผ๋ก ๊ฐ๋ ์ต๋จ ๊ฑฐ๋ฆฌ) + (์ฒ์์์ ๋ถ์ฐ์ผ๋ก ๊ฐ๋ ์ต๋จ ๊ฑฐ๋ฆฌ)๋ก ํ์ ๋ฌธ์ ๋ฅผ ๋๋ ์ ์๊ณ ๊ฐ๊ฐ์ ํ์ ๋ฌธ์ ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ค์ ํฉ์ด (์์ธ์์ ๋ถ์ฐ์ผ๋ก ๊ฐ๋ ์ต๋จ ๊ฑฐ๋ฆฌ)๊ฐ ๋๋ ๊ฒ์ ๋งํ๋ค.
23.3 ํผ๋ณด๋์น ์์ด
์ผ๋ฐ ์ฌ๊ท ๋ฐฉ์์ผ๋ก ํผ๋ณด๋์น ์์ด
โํผ๋ณด๋์น ๊ณต์
1) fib(n) = fib(n-1) + fib(n-2)
2) fib(2) = 1
3) fib(1) = 1
์๋ฅผ๋ค์ด fib(20)์ 20๋ฒ์งธ ์ซ์์ ๊ฐ์ ๋งํ๋ ๊ฒ์ด๋ค.
fib(6)์ ์ซ์ 8์ ์๋ฏธํ๋ค.(1 + 1 + 2 + 3 + 5 + 8)
// ์ผ๋ฐ ์ฌ๊ท ๋ฐฉ์์ ํผ๋ณด๋์น ์์ด
function fib(n){
if(n <= 2) return 1;
return fib(n-1) + fib(n-2);
}
์์ ํจ์์ฒ๋ผ ์ผ๋ฐ ์ฌ๊ท ๋ฐฉ์์ผ๋ก ํผ๋ณด๋์น ์์ด์ ์์ฑํ ์ ์์ง๋ง, O(2^N)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋นํจ์จ์ ์ด๋ค. ์กฐ๊ธ๋ง ์ ๋ฌํ๋ ๊ฐ์ ํด์๋ก ์ฒ๋ฆฌ ์๊ฐ์ด ๋งค์ฐ ์ค๋๊ฑธ๋ฆฐ๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ๋์ ํ๋ก๊ทธ๋๋ฐ์ด๋ค. ํผ๋ณด๋์น ์์ด์ ๊ฒฝ์ฐ ๋ฐ๋ณต๋๋ ํ์ ๋ฌธ์ ๊ฐ ์กด์ฌํ๊ณ ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋์ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
(ex fib(5) = fib(4) + fib(3) = fib(3) + fib(2) + fib(2) + fib(1))
23.4 Memo์ ๊ฐ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ(Memoization)
์์ ์ผ๋ฐ ์ฌ๊ท ๋ฐฉ์์ ํผ๋ณด๋์น ํจ์์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ํ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ๋์จ ๊ฐ๋ค์ ๊ธฐ์ตํด ๋์๋ค๊ฐ ๋ค์ ํ์ฉํ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค๋ฉด fib(5)๋ฅผ ๊ตฌํ ๋๋ fib(3)์ ๊ณ์ฐ์ด ๋ ๋ฒ ๋ฐ๋ณตํ๊ฒ ๋๋๋ฐ ์ฒ์ fib(3)์ ๊ณ์ฐํ์๋ ์ด๋ฅผ ๊ธฐ์ตํ๊ณ ๋ค์ fib(3)์ ๊ณ์ฐํด์ผํ ๋ ๋ฏธ๋ฆฌ ์ ์ฅํด ๋์ fib(3)์ ๊ฐ์ ํ์ฉํด์ ๋น ๋ฅด๊ฒ ๊ณ์ฐํ๋ ๊ฒ์ด๋ค. ํต์ฌ์ ๋ณดํต ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ตฌ์กฐ๋ฅผ ๋ง๋ ๋ค์ ์ ์ฅํด ๋์ ๊ฐ๋ค์ ํ์ฉํด์ผ ํ๋ค.
function fib(n, memo=[]){
if(memo[n] !== undefined) return memo[n]
if(n <= 2) return 1;
var res = fib(n-1, memo) + fib(n-2, memo);
memo[n] = res;
return res;
}
23.5 Memoization์ ํ์ฉํด์ ํผ๋ณด๋์น๋ฅผ ๊ตฌํํ์ ๊ฒฝ์ฐ์ ๋น ์ค ์๊ฐ ๋ณต์ก๋
1) ์ผ๋ฐ ์ฌ๊ทํ ํผ๋ณด๋์น : O(2^N)
2) ๋ฉ๋ชจ์ด์ ์ด์ ์ ํตํ ํผ๋ณด๋์น : O(N)
23.6 Tabulation
ํ๋ทธ๋ ์ด์ ์ ๋ฃจํ์ ๊ฐ์ด ์ํ์ ํตํด ์์ ํ๋ค. ๋ฉ๋ชจ์ด์ ์ด์ ๊ณผ๋ ๋ฐ๋๋ก ๊ฐ์ฅ ์์ ํ์ ๋ฌธ์ ๋ฅผ ํผ ๋ค์์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ค. ์ฆ, ๊ฐ์ฅ ๋ฐ๋ฅ์ ์์นํ fib(1)๋ถํฐ ๊ณ์ฐ์ ํ๋ฉด์ ์ ์ฅํ๊ณ ์ด๋ฅผ ํ์ฉํ๋ฉฐ ์ฌ๋ผ๊ฐ๋ ๋ฐฉ์์ด๋ค.
function fib(n){
if(n <= 2) return 1;
var fibNums = [0,1,1];
for(var i = 3; i <= n; i++){
fibNums[i] = fibNums[i-1] + fibNums[i-2];
}
return fibNums[n];
}
'๐ Language & CS knowledge > Algorithm & Data structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
21 ๊ทธ๋ํ ์ํ (0) | 2022.08.19 |
---|---|
20 ๊ทธ๋ํ (0) | 2022.08.17 |
19 ํด์ ํ ์ด๋ธ (0) | 2022.08.16 |
18 ์ด์ง ํ (0) | 2022.08.16 |
17 ํธ๋ฆฌ ์ํ (0) | 2022.08.16 |