์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- float
- Flex
- ๋ธ๋ก๊ทธ
- useRef
- history api
- ์๊ณ ๋ฆฌ์ฆ
- REACT
- Props
- useEffect
- ์ฝ๋ฉํ ์คํธ
- ๋ฐ๋ธ์ฝ์ค3๊ธฐ
- ํ๋ก ํธ์๋
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ๋ก๊ทธ๋๋จธ์ค
- position
- ๋ฐ๋ธ์ฝ์ค
- fetch API
- CSS
- Gatsby
- Today
- Total
Daehyunii's Dev-blog
06 ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ ๋ณธ๋ฌธ
06 ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ
Daehyunii 2022. 8. 5. 00:026.1 ์ ํ ๊ฒ์(์ ํ ํ์)
์ค๋ ๊ณต๋ถํ ๋ด์ฉ์ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด์ ๊ณต๋ถํ๋ค. ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ ์๋ฅผ ๋ค์ด ํ์๊ฐ์
์ ์์ด๋๊ฐ ์ค๋ณต๋๋ ๊ฒฝ์ฐ ์ค๋ณต๋ ์์ด๋๊ฐ ์๋์ง ์๋์ง ํ์ธ์ ํด์ผํ๋ ๊ฒฝ์ฐ ๋ฑ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ผ๋ จ์ ๊ณผ์ ์ด ๋ฐ๋ก ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
์ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ค์ํ ๊ฒ์ ๊ด๋ จ ๋ฉ์๋๋ค์ ์ ๊ณตํ๊ณ ์๋ค.
1. indexOf : ๋ฉ์๋๋ฅผ ํตํด ๋ฐฐ์ด๋ด์ ํด๋น ์์๊ฐ ์๋ค๋ฉด ํด๋น ์์์ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ๋ฐํํด์ฃผ๊ณ , ์๋ค๋ฉด -1์ ๋ฐํํ๋ค.
2. includes : ๋ฐฐ์ด ๋ด์ ํน์ ์์๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํ์ฌ ๋ถ๋ฆฌ์ธ๊ฐ์ ๋ฐํํ๋ค.
3. find : ์์ ์ ํธ์ถํ ๋ฐฐ์ด์ ์์๋ฅผ ์ํํ๋ฉด์ ์ธ์๋ก ์ ๋ฌ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ์ฌ ๋ฐํ๊ฐ์ด true์ธ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฐํํ๋ค.
4. findIndex : ์์ ์ ํธ์ถํ ๋ฐฐ์ด์ ์์๋ฅผ ์ํํ๋ฉด์ ์ธ์๋ก ์ ๋ฌ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ์ฌ ๋ฐํ๊ฐ์ด true์ธ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฐํํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฐฐ์ด ๊ฒ์์ ํ ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ฌด์์ผ๊น? ์ฌ์ค ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋ชจ๋ ๊ฐ๋ณ ํญ๋ชฉ์ ์์๋๋ก ์ดํด๋ณด๋ฉด์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ์ธ์ง ํ์ธํ๋๊ฒ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๊ฒ์ ๋ฐฉ๋ฒ์ด ์ ํ ๊ฒ์์ด๋ค. ์ ํ ๊ฒ์์ ๋ฐฐ์ด์ ์ฒ์๋ถํฐ ๋๊น์ง ์ด๋ํ๋ฉด์ ๋งจ ๋์ ๋๋ฌํ ๋๊น์ง ๊ฐ ํญ๋ชฉ์ด ์ฐพ๊ณ ์ํ๋ ์์๊ฐ ์๋์ง ํ๋ ํ๋ ํ์ธํ๋ ๊ฒ์ด๋ค. ์ฒซ ๋ถ๋ถ์์ ์์ํด์ ๋๋ถ๋ถ์ผ๋ก ์ด๋ํ๋ฉด์ ํ ๋ฒ์ ํ๋์ ํญ๋ชฉ์ ํ์ธํ ์๋ ์๊ณ , ๋ฐ๋๋ก ๋ ๋ถ๋ถ์์ ์์ํ์ฌ ์ฒซ ๋ถ๋ถ์ผ๋ก ์ด๋ํ ์๋ ์๋ค.
์ ํ ๊ฒ์ ์ฝ๋ ์์ฑ์ ์ํ ์์ฌ์ฝ๋(๊ฐ์ฌ๋์ด ์๋ ค์ฃผ์ ์์ฌ์ฝ๋์)
1. ํจ์์ ์ ๋ฌํด์ผ ํ๋ ์ธ์๋ ๋ฐฐ์ด๊ณผ ํน์ ๊ฐ์ ์ ๋ฌํด์ผ ํ๋ค.
2. ๋ฐฐ์ด ์ ์ฒด์ ๋ํ ๋ฃจํ๋ฅผ ๋ง๋ ๋ค.
3. ํ์ฌ ํ์ธ ์ค์ธ ๋ฐฐ์ด ์์๊ฐ ์ฐ๋ฆฌ๊ฐ ์
๋ ฅํ๋ ๊ฐ๊ณผ ๋์ผํ์ง ํ์ธํด์ผ ํ๋ค.
4. ๋ง์ฝ ํ์ธํ๊ณ ์ ํ๋ ์์๊ฐ ๋ฐฐ์ด๋ด์ ์๋ค๋ฉด ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํด์ผ ํ๋ค.
5. ๋ฐ๋๋ก ์กด์ฌํ์ง ์๋๋ค๋ฉด -1์ ๋ฐํํ๊ฒ ํ๋ค.
//์ ํ ๊ฒ์
function elemSearch(arr,num){
for(let i = 0 ; i < arr.length ; i++){
if(arr[i] === num){
return i;
}
}
return -1
}
console.log(elemSearch([1,2,3,4,5],3));
์ฐธ๊ณ ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ธฐ๋ณธ ์ ๊ณตํ๋ ๋ฐฐ์ด ๊ฒ์ ๋ฉ์๋๋ค์ ์ ํ ๊ฒ์์ผ๋ก ์ง์ํ๋ค.
6.2 ์ด์ง ๊ฒ์(binary search)(์ด๋ถ ํ์)
์ ํ ๊ฒ์์ ์์์ ์ค๋ช
ํ๋ฏ์ด ํ๋ ํ๋ ์์๋ค์ ๋น๊ตํ๋ค. ์ด๋ฒ์๋ ํ ๋จ๊ณ ์
๊ทธ๋ ์ด๋ ๋ ์ ๋ ฌ์ด ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๋ ๋ฐฐ์ด์์ ์ฌ์ฉํ ์ ์๋ ์ ํ ๊ฒ์๋ณด๋ค ๋น ๋ฅธ ์ด์ง ๊ฒ์์ ๋ํด์ ์์๋ณด์. ์ด์ง ๊ฒ์์ ์ ํ ๊ฒ์๋ณด๋ค ํฌ๊ฒ ๊ฐ์ ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ํ์ง๋ง ์ฃผ์ํด์ผ ํ ์ ์ ๋ฐ๋์ ๋ฐฐ์ด์ด ์ ๋ ฌ๋์ด ์๋ ๊ฐ๋ค์ ๊ฐ์ง๊ณ ์์ด์ผ ์ด์ง ๊ฒ์์ ํ ์ ์๋ค. ์ฒ์์ ๊ณต๋ถํ๋ ๋ํ์ ์ธ ํจํด ์ค ํ๋์ธ divide and conquer ์ฆ, ๋ถํ ๊ทธ๋ฆฌ๊ณ ์ ๋ณต ํจํด์ด๋ค.
์ด์ง ๊ฒ์ ์ฝ๋ ์์ฑ์ ์ํ ์์ฌ์ฝ๋(๊ฐ์ฌ๋์ด ์๋ ค์ฃผ์ ์์ฌ์ฝ๋์)
1. ํจ์๋ ์ ๋ ฌ๋ ๋ฐฐ์ด๊ณผ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ ์ธ์๋ก ๋ฐ๋๋ค.
2. 3๊ฐ์ ๋ณ์๋ฅผ ๋ง๋ ๋ค. ํฌ์ธํฐ ์ญํ ์ ํ ๋ณ์ 2๊ฐ์ ์ค๊ฐ์ ๊ฐ๋ฆฌํค๊ฒ ๋ ๋ณ์ 1๊ฐ๋ฅผ ๋ง๋ ๋ค.
3. ํฌ์ธํฐ ์ญํ ์ ํ ๋ณ์ ์ค ํ๋๋ ๊ณ์ฐ์ ์์ํ๋ ์ข์ธก์ ๋ํ๋ด๋ ์ธ๋ฑ์ค๋ก 0์ผ ํ ๋นํ๊ณ , ๋ฐฐ์ด์ ์ฐ์ธก ๋์ ๊ฐ๋ฆฌํค๋ ์ฐ์ธก ํฌ์ธํฐ๋ฅผ ๋ง๋ค๋ฉฐ ์ฐ์ธก ํฌ์ธํฐ ๋ณ์์๋ ๋ฐฐ์ด์ ๊ธธ์ด์์ 1์ ๋บ ๊ฐ์ ํ ๋นํ๋ค. ๋ฐ๋ผ์ ์ข์ธก ํฌ์ธํฐ๋ 0, ์ฐ์ธก ํฌ์ธํฐ๋ ๋ฐฐ์ด.length - 1์ ํ ๋นํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ํฌ์ธํฐ์ ํ๊ท ์ ๋ํ๋ด๋ ์ค๊ฐ์ ๊ฐ๋ฆฌํค๋ ๋ณ์๋ฅผ ๋ง๋ค๊ณ , ์ข์ธก ํฌ์ธํฐ์ ์ฐ์ธก ํฌ์ธํฐ์ ํ๊ท ์ ์ด์ฉํ๋ค.(์์์ ๋ฐฉ์ง๋ฅผ ์ํด Math.floor๋ก ๋ด๋ฆผ์ด๋ Math.ceil๋ก ์ฌ๋ฆผ์ ํด์ค์ผ ํ๋ค.)
4. ๊ทธ๋ฆฌ๊ณ ๋ ๊ฐ์ง๋ฅผ ํ์ธํด์ผ ํ๋ค. ์ฒซ ๋ฒ์งธ๋ก ํญ๋ชฉ์ ์ฐพ์๋์ง ํ์ธํ๋ค. ์ฐพ์ง ๋ชปํ๋ค๋ฉด ์ฐ์ฐ์ ๊ณ์ํ๋ค. ๋ ๋ฒ์งธ๋ก ์ข์ธก ํฌ์ธํฐ๊ฐ ์ฐ์ธก ํฌ์ธํฐ๋ณด๋ค ์์ ์๋ ๋์์๋ง ์ฐ์ฐ์ด ๊ณ์๋์ด์ผ ํ๋ค.
5. ๋ง์ฝ ์ค๊ฐ๊ฐ์ด ์ฐพ๊ณ ์ ํ๋ ๊ฐ๋ณด๋ค ์๋ค๋ฉด ์ข์ธก ํฌ์ธํฐ๋ฅผ ์ค๊ฐ๊ฐ +1๋ก ๋ฐ๊ฟ์ฃผ๊ณ , ์ค๊ฐ๊ฐ์ด ์ฐพ๊ณ ์ ํ๋ ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด ์ฐ์ธก ํฌ์ธํฐ๋ฅผ ์ค๊ฐ๊ฐ -1๋ก ๋ฐ๊ฟ์ค๋ค. ๊ฐ์ ์ฐพ์๋๊น์ง ์ฐ์ฐ์ ๊ณ์ํ๋ค.
6. ์ฐ์ฐ์ด ๋ค ๋๋ ํ์๋ ๊ฐ์ ์ฐพ์ง ๋ชปํ๋ค๋ฉด -1์ ๋ฐํํ๋ค.
function indexFinder(arr, ele){
let left = 0;
let right = arr.length - 1;
let middle = Math.floor((left + right) / 2);
while(arr[middle] !== ele && left <= right){
if(arr[middle] < ele){
left = middle + 1;
}else{
right = middle -1;
}
middle = Math.floor((left + right) / 2);
}
if(arr[middle] === ele){
return middle;
}
return -1
}
console.log(indexFinder([1,2,3,4,5,6,7,8,9],3));
๊ต์ฅํ ํท๊ฐ๋ฆด ์ ์์ง๋ง, ํต์ฌ์ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๊ฐ์ง๊ณ ์์ชฝ ๋์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ๋ง๋ค๊ณ ์ค๊ฐ์ ์ ํํ ๋ค์ ํ์์๋ ๋๋จธ์ง ๋ถ๋ถ์ ๋ฒ๋ฆฌ๋ ๊ณผ์ ์ ๋ฐ๋ณตํด์ ์ํ๋ ์์๋ฅผ ์ฐพ๋๊ฒ์ด๋ค. ์์ ์ฝ๋๋ฅผ ์กฐ๊ธ ๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํด ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
function indexFinder(arr, ele){
let left = 0;
let right = arr.length - 1;
let middle = Math.floor((left + right) / 2);
while(arr[middle] !== ele && left <= right){
if(arr[middle] < ele) left = middle + 1;
else right = middle -1;
middle = Math.floor((left + right) / 2);
}
return arr[middle] === ele ? middle : -1 //์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์๋ก ํํ
}
console.log(indexFinder([1,2,3,4,5,6,7,8,9],3));
์ค์ํ ์ ์ ์ด์ง ๊ฒ์์ O(logN) ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค. ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 2๋ฐฐ๋ก ๊ธธ์ด ์ง๋๋ผ๋ ์ฒ๋ฆฌ ๊ณผ์ ์ ํ ๋ฒ์ฉ๋ง ๋์ด๋๋ค. ์ฆ, ๋ก๊ทธ ์ด์ ์ด์ n+1...์ด ๋๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ ์ฒ๋ฆฌ ๊ณผ์ ์ ํ ๋ฒ์ฉ๋ง ๋์ด๋๊ฒ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ O(1) ์๊ฐ ๋ณต์ก๋ ๋ณด๋ค๋ ์๋์ง๋ง, ๊ต์ฅํ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ดค์๋ ํจ์จ์ ์ธ ๊ฒ์ ๋ฐฉ๋ฒ์ด๋ค.
6.3 ์ผ๋ฐ์ ์ธ ๋ฌธ์์ด ๊ฒ์ ๋ฐฉ๋ฒ
๊ธด ๋ฌธ์์ด์์ ๋ฌธ์ ํ๋ ํ๋๋ฅผ ๊ฒ์ํ๋๊ฒ์ ๋ฉ์๋๋ ๋ฐ๋ณต๋ฌธ์ ํตํด์ ์ฝ๊ฒ ์ฐพ์๋ผ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ธด ๋ฌธ์์ด์์ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ฒ์ํ๋ ๊ฒ์ ์ด๋ป๊ฒ ํด์ผํ ๊น? ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์. ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๊ณ ๊ฐ๋จํ ์ ๊ทผ๋ฒ ์ค ํ๋๋ ๋ ๋ฌธ์์ด์ ๋๋ํ ๋๊ณ ์ ํ ๋ฒ์ ํ๋์ ๋ฌธ์์ฉ ๋น๊ตํ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด๋ณด์.
'wowomgzomg'๋ฌธ์์ด์์ 'omg'๊ฐ ํฌํจ๋์ด ์๋์ง, ๋ช ๋ฒ๋ค์ด๊ฐ ์๋์ง ํ์ธํ๊ณ ์ ํ๋ค.
wowomgzomg
omg๋น๊ต
omg๋น๊ต
omg๋น๊ต
omg๋น๊ต
omg๋น๊ต
omg๋น๊ต
omg๋น๊ต
omg๋น๊ต
omg๋น๊ต
์ด๋ ๊ฒ ํ๋ ํ๋ ํ ๊ธ์์ฉ ์ฎ๊ฒจ๊ฐ๋ฉด์ ์ผ์นํ๋๊ฒ ์๋ ๋น๊ต! ํ๋๊ฒ
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์
๊ธด ๋ฌธ์์ด์์ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ฒ์ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ๋ ์์ฌ์ฝ๋(๊ฐ์ฌ๋์ด ์๋ ค์ฃผ์ ์์ฌ์ฝ๋์)
1. ๊ธด ๋ฌธ์์ด๊ณผ ์ฐพ๊ณ ์ ํ๋ ๋ถ๋ถ ๋ฌธ์์ด์ ์ธ์๋ก ๋ฐ๋ ํจ์๋ฅผ ๋ง๋ ๋ค.
2. ๊ธด ๋ฌธ์์ด์ ๋ฐ๋ณตํ๋ ๋ฃจํ๋ฅผ ๋ง๋ ๋ค.
3. ์งง์ ๋ฌธ์์ด์ ๋ฐ๋ณตํ๋ ๋ฃจํ๋ฅผ ์ค์ฒฉ๋ฃจํ๋ก ๋ง๋ ๋ค.
4. ๋ฐ๋ณต๋๋ ๋ฌธ์๋ผ๋ฆฌ ๋น๊ต๋ฅผ ์์ํ๋ค.
5. ๋ง์ฝ ๋ฌธ์๋ผ๋ฆฌ์ ๋น๊ต๊ฐ ์ผ์นํ์ง ์๋๋ค๋ฉด ์งง์ ๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ๋ฃจํ์์ ๋ฒ์ด๋๋ค.(breakํค์๋)
6. ๊ทธ๋ฆฌ๊ณ ๊ธด ๋ฌธ์์ด์ ๋ฌธ์์ ๋ฐ๋ณต๋๋ ์งง์ ๋ฌธ์๋ฅผ ํ๋์ฉ ๋น๊ตํ์ฌ ์ผ์นํ๋ฉด ๋ค์ ๋ฌธ์๋ก ๋์ด๊ฐ๋ค.
7. ์ผ์นํ๋ ๋ฌธ์์ด์ ์ฐพ์ผ๋ฉด ๋ด๋ถ ๋ฃจํ๋ฅผ ์๋ฃํ๊ณ ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์ํค๊ณ , ์นด์ดํธ๋ฅผ ๋ฐํํ๋ค.
8. ์นด์ดํธ๋ฅผ 0์์ ์์ํ๋ฉด ๋ณ๋์ ์ค๋ฅ ์ฒ๋ฆฌ๋ ํ์ํ์ง ์๋๋ค.
function strFinder(long, short){
let count = 0;
for(let i = 0 ; i < long.length ; i++){
for(let j = 0 ; j < short.length ; j++){
if(short[j] !== long[i + j]) break; //์ฌ๊ธฐ์ i๋ ๋น๊ต๋ฅผ ์์ํ ๋ฌธ์๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํด๊ฐ ์ฌ์
if(j === short.length - 1) count++;
}
}
return count;
}
console.log(strFinder("himamahihelhi", "hi"));
'๐ Language & CS knowledge > Algorithm & Data structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
08 ์ ํ ์ ๋ ฌ (0) | 2022.08.07 |
---|---|
07 ๋ฒ๋ธ ์ ๋ ฌ (0) | 2022.08.06 |
05 ์ฌ๊ท (0) | 2022.08.04 |
04 ๋ฌธ์ ํด๊ฒฐ ํจํด (0) | 2022.08.04 |
03 ๋ฌธ์ ํด๊ฒฐ ์ ๊ทผ๋ฐฉ๋ฒ (0) | 2022.08.04 |