์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- history api
- REACT
- ๋ฐ๋ธ์ฝ์ค
- ํ๋ก ํธ์๋
- ๋ธ๋ก๊ทธ
- ํ๋ก๊ทธ๋๋จธ์ค
- Props
- ์ฝ๋ฉํ ์คํธ
- Flex
- float
- fetch API
- CSS
- ์๊ณ ๋ฆฌ์ฆ
- useEffect
- ๋ฐ๋ธ์ฝ์ค3๊ธฐ
- Gatsby
- position
- useRef
- ์๋ฐ์คํฌ๋ฆฝํธ
- Today
- Total
Daehyunii's Dev-blog
05 ์ฌ๊ท ๋ณธ๋ฌธ
5.1 ์ฌ๊ทํจ์๋ฅผ ์ฌ์ฉํ๋ ์ด์
์ฐ์ ์ฌ๊ท๋ผ๋๊ฒ์ด ๋ฌด์์ผ๊น? ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๊ณต๋ถํ๋ฏ์ด ์ฌ๊ท๋ ์๊ธฐ ์์ ์ ํธ์ถํ๋ ํจ์๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฌ๊ท๋ฅผ ์ ์์์ผ ํ ๊น? ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ ๋ชจ๋ ๊ณณ์์ ํ์ฉ๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฐ์ ์ฌ๊ท๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ '์คํ์ปจํ ์คํธ ์คํ'์ ์ดํดํ ํ์๊ฐ ์๋ค. ์คํ ์ปจํ ์คํธ๋ ์ด๋ฏธ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ณต๋ถํ์ ์ด ์๋ค.
๊ฐ๋จํ ๋ค์ ์๊ฐํด ๋ณด์๋ฉด ์คํ ์ปจํ ์คํธ ์คํ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ฝ๋๋ฅผ ์คํํจ์ ์์ด ์ผ์ ์ฒ๋ฆฌ ์์๋ฅผ ๊ด๋ฆฌํ๋ ํด์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
์ฐ์ ์ฌ๊ท๋ ๋ ๊ฐ์ง ์กฐ๊ฑด์ ๊ผญ ์ง์ผ์ ์์ฑํด์ผ ํ๋ค. ์ฒซ ๋ฒ์งธ ์กฐ๊ฑด์ ๋ฐ๋์ ์ข ๋ฃ ์กฐ๊ฑด์ด ์์ด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฌดํ๋ฃจํ์ ๋น ์ง๊ธฐ ๋๋ฌธ์ด๋ค. ๋ ๋ฒ์งธ ์กฐ๊ฑด์ ์ฌ๊ท ํจ์ ํธ์ถ์ ๋งค๊ฐ๋ณ์์ ๋ณํ๊ฐ ์์ด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋๊ฐ์ ํจ์๊ฐ ๋ฌดํ ๋ฐ๋ณต๋์ด ๋ฌดํ ๋ฃจํ์ ๋น ์ง๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด์ ์นด์ดํธ ๋ค์ด์ ํ ์ ์๋ ํจ์๋ฅผ ๋ง๋ค์ด ๋ณด์!
// ๋ฐ๋ณต๋ฌธ์ผ๋ก ์์ฑํ ์นด์ดํธ ๋ค์ด
function countDown(num){
for(var i = num; i > 0; i--){
console.log(i);
}
}
// ์ฌ๊ทํจ์๋ก ์์ฑํ ์นด์ดํธ ๋ค์ด
function countDown(num){
if(num <= 0) {
return;
}
console.log(num);
num--;
countDown(num);
}
countDown(3)
์ด๋ฒ์๋ ์ฌ๊ทํจ์๋ฅผ ์ค๋ช ํ ๋ ๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅํ๋ ํฉํ ๋ฆฌ์ผ์ ์์ฑํด ๋ณด์. ํฉํ ๋ฆฌ์ผ์ 1๋ถํฐ ์ฃผ์ด์ง ์ ์๊น์ง ๋ชจ๋ ๊ณฑํ๋๊ฒ์ ๋งํ๋ค.
//for ๋ฐ๋ณต๋ฌธ์ผ๋ก ํฉํ ๋ฆฌ์ผ ๊ตฌํ๊ธฐ
function factorialll(num){
let facNum = 1;
for(let i = num ; i > 0 ; i--){
facNum *= i;
}
return facNum;
}
console.log(factorialll(5));
//while ๋ฐ๋ณต๋ฌธ์ผ๋ก ํฉํ ๋ฆฌ์ผ ๊ตฌํ๊ธฐ
function fff(num){
if(num <= 0) return 1
let res = num;
while(--num) res *= num;
return res;
}
console.log(fff(5));
//์ฌ๊ทํจ์๋ก ํฉํ ๋ฆฌ์ผ ๊ตฌํ๊ธฐ
function factorial(n){
if(n <= 0)return 1;
return n * factorial(n-1);
}
console.log(factorial(3));
์์ ๊ฐ์ด ์ฌ๊ทํจ์๋ ๋ฐ๋ณต๋ฌธ์ ํตํด์ ๊ตฌํํ ์๋ ์์ง๋ง, ์ฌ๊ทํจ์๋ฅผ ์ฌ์ฉํจ์ผ๋ก์ ๋งค์ฐ ๊ฐ๊ฒฐํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
์ฌ๊ท ํจ์๋ฅผ ์์ฑํ ๋ ์ฃผ์ํด์ผ ํ ์ ์ ์ดํด๋ณด์๋ฉด ์ฌ๊ทํจ์์์ ์ข ๋ฃ ์กฐ๊ฑด์ด ์๊ฑฐ๋ ์๋ชป๋๋ ๊ฒฝ์ฐ๋ ์์์ ์ค๋ช ํ๋ฏ์ด ๋ฌดํ๋ฃจํ์ ๋น ์ ธ ์คํ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ข ๋ฃ์กฐ๊ฑด์ ๋ฐ๋์ ๋ง๋ค์ด์ค์ผ ํ๊ณ , ๋ฐํ์ ์๊ฑฐ๋ ์๋ชป๋ ๋ฐํ์ ํด๋ ์คํ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ ์ ์์ผ๋, ๊ผญ ์ข ๋ฃ ์กฐ๊ฑด์ ๋ง๋ค์ด ์ค์ผ ํ๋ค!!
5.2 ํฌํผ ๋ฉ์๋ ์ฌ๊ท
ํฌํผ ๋ฉ์๋ ์ฌ๊ท๋ ์ธ๋ถ ํจ์์ ์ค์ฒฉ ํจ์๊ฐ ์ฌ๊ทํจ์์ธ ๊ฒฝ์ฐ, ํฌํผ ๋ฉ์๋ ์ฌ๊ท๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ฝ๊ฒ ๋งํด, ๋ด๋ถํจ์ ์ฆ, ์ค์ฒฉํจ์๋ฅผ ์ฌ๊ทํจ์๋ก ๋ง๋๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด ์ด๋ ๋ฐฐ์ด์์ ๋ชจ๋ ํ์๊ฐ์ ์์งํ๋ ๊ฒ๊ณผ ๊ฐ์ ์์ ์ ์ํํ๊ณ ์๋ค๋ฉด ํฌํผ ๋ฉ์๋ ์ฌ๊ท๋ฅผ ์ฌ์ฉํ๋๊ฒ ์์ฃผ ์ข์ ์ ๋ต์ด์ ์ ๊ทผ๋ฒ์ด๋ค. ํฌํผ ๋ฉ์๋ ์ฌ๊ท๋ ์ผ์ข ์ ๊ฒฐ๊ณผ๋ฅผ ์ปดํ์ผํ ๋ ํํ ์ฌ์ฉ๋๋ ํจํด์ด๋ค. ๋ณดํต ๋ฐฐ์ด์์ ๋ง์ด ์ฌ์ฉ๋๋ค. ํ์ง๋ง, ๋ฐ๋ณต๋ฌธ๋ณด๋ค ์ฌ๊ท๋ฅผ ์ฌ์ฉํด์ ํด๊ฒฐํ๋๊ฒ์ด ์กฐ๊ธ ๋ ๋ณต์กํ ๋ฐฉ๋ฒ์ผ ์ ์๋ค.
function oddValues(array){
let result = []
function helper(input){
if(input.length === 0) {
return;
}
if(input[0] % 2 !== 0){
result.push(input[0])
}
helper(input.slice(1))
}
helper(array)
return result;
}
console.log(oddValues([1,2,3,4,5,6])); // [1,3,5]
5.3 ์์ ์ฌ๊ท
์์ ์ฝ๋๋ฅผ ์์ ์ฌ๊ท๋ฅผ ํตํด์ ์์ฑํ ์๋ ์๋ค. ์ฃผ์ํด์ผ ํ ์ ์ result๋ฐฐ์ด์ ํจ์๊ฐ ํธ์ถ ๋ ๋๋ง๋ค ๋น ๋ฐฐ์ด์ ์์ฑํ๋ค๋ ๊ฒ์ ์ฃผ์ํด์ผ ํ๋ค.
function oddValues(array){
let result = [];
if(array.length === 0) {
return result;
}
if(array[0] % 2 !== 0){
result.push(array[0]);
}
result = result.concat(oddValues(array.slice(1)));
return result;
}
oddValues([1,2,3,4,5])
//slice(1) << ๋ฐฐ์ด์ 1๋ฒ ์ธ๋ฑ์ค๋ฅผ ์ ์ธํ๊ณ ๋๋จธ์ง ์ธ๋ฑ์ค๋ฅผ ๋ณต์ฌํด์ ๋ฐํ
//concat() << ์ธ์๋ก ์ ๋ฌ๋ ๊ฐ๋ค์ ์๋ณธ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ก ์ถ๊ฐํ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ
//์ฆ, result[1] -> result[3] -> result[5] -> ๋ฐํ๊ฐ[5] -> ๋ฐํ๊ฐ[3,5] -> ๋ฐํ๊ฐ[1,3,5]
'๐ Language & CS knowledge > Algorithm & Data structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
07 ๋ฒ๋ธ ์ ๋ ฌ (0) | 2022.08.06 |
---|---|
06 ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ (0) | 2022.08.05 |
04 ๋ฌธ์ ํด๊ฒฐ ํจํด (0) | 2022.08.04 |
03 ๋ฌธ์ ํด๊ฒฐ ์ ๊ทผ๋ฐฉ๋ฒ (0) | 2022.08.04 |
02 ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด์ ์ฑ๋ฅ ํ๊ฐ (0) | 2022.08.01 |