๐ Base13 Context Switch๊ฐ ์ผ์ด๋ ๋๋ ์ overhead๊ฐ ํด๊น? ์๋ฌธ์ด ๋ ์ด์ Context Switch ๊ฐ๋ ์ ๋ํด ๊ณต๋ถํ๋ค๊ฐ ์๋์ ๋ด์ฉ์ ์ ํ๋ค. User mode์์ Kernel mode๋ก ๊ฐ๋ ๊ฑด Context Switch๊ฐ ์๋์ ์ผ๋ก overhead๊ฐ ์ ์ ์์ ์ด๋ค. Context Switch ์์ด CPU ์ํ ์ ๋ณด ๋ฑ context์ ์ผ๋ถ๋ฅผ PCB(Process Control Block)์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ค๋ง, Kernel mode์์ User mode๋ก ๊ฐ ๋ Context Switch ๋ฐ์ ์์๋ ๊ทธ ๋ถ๋ด์ด ํจ์ฌ ํฌ๋ค. Cache Memory๋ฅผ flush ํ ๋ overhead๊ฐ ๋งค์ฐ ํฌ๊ธฐ ๋๋ฌธ์ด๋ค. ์ Context Switch๊ฐ ๋ฐ์ํ ๋ overhead๊ฐ ํฐ ๊ฒ์ผ๊น? Context Switch๋? Context Switch(๋ฌธ๋งฅ ๊ตํ)๋ .. 2023. 9. 20. ๋ฌธ์์ด์์ ์ซ์๋ฅผ ๋ชจ๋ ์ฐพ์ ๋ํ ๋ค์ ํด๋น ๊ฐ์ ๋ฌธ์์ด์ ๊ธธ์ด๋ก ๋๋ ๊ฐ์ ์ ์๋ก ๋ฐ์ฌ๋ฆผํ์ฌ ๋ฆฌํดํ๊ธฐ ๐ ๋ฌธ์ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์์ ์ซ์๋ฅผ ๋ชจ๋ ์ฐพ์ ๋ํ ๋ค์ ํด๋น ๊ฐ์ (์ซ์์ ๊ณต๋ฐฑ์ ์ ์ธํ ๋๋จธ์ง) ๋ฌธ์์ด์ ๊ธธ์ด๋ก ๋๋ ๊ฐ์ ์ ์๋ก ๋ฐ์ฌ๋ฆผํ์ฌ ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ ๏ธ ์ฃผ์์ฌํญ - ๋น ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ๊ฒฝ์ฐ, 0์ ๋ฆฌํดํด์ผ ํฉ๋๋ค. - ์ซ์(digit)๋ ์ฐ์ํด์ ๋ฑ์ฅํ์ง ์์ต๋๋ค. โ๐ป ๋ด ํ์ด function numberSearch(str) { // ์ ์ถ๋ ฅ ์์ // 'Hello6 9World 2,' // ์ซ์: 6+9+2 = 17, ๋ฌธ์์ด ๊ธธ์ด: 10 (์ซ์ ๊ณต๋ฐฑ ์ ์ธ) // 17 / 10 = 1.7 -> ๋ฐ์ฌ๋ฆผํด์ 2 // ์์ ์ซ์๋ฅผ ์ ์ธ const digits = '0123456789'; // ๋ง์ฝ str์ด ๋น ๋ฌธ์์ด์ด๋ผ๋ฉด if (str === '') { // 0์ ๋ฆฌํด return .. 2023. 4. 25. ์ ๊ณฑ๊ทผ ๊ฐ์ ์์์ ๋ ์๋ฆฌ๊น์ง ๋ฆฌํดํ๊ธฐ : feat. ๋ฐ๋น๋ก๋์ ๋ฒ์ ์ ํ์, parseInt( )์ Number( )์ ์ฐจ์ด ๐ ๋ฌธ์ ์๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ๊ณฑ๊ทผ ๊ฐ์ ์์์ ๋ ์๋ฆฌ๊น์ง ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ ๏ธ ์ฃผ์์ฌํญ Math.sqrt ์ฌ์ฉ์ ๊ธ์ง๋ฉ๋๋ค. โ๐ป ๋ด ํ์ด function computeSquareRoot(num) { // pseudo code // let originNum = 9; // let approxNum = originNum / 2; // while((approxNum * 2) !== originNum){ // approxNum = (approxNum + (originNum / approxNum) / 2) // } let approxNum = num / 2; while((approxNum ** 2) !== num){ if(Number((approxNum ** 2).toFixed(2)) === num) { brea.. 2023. 4. 6. ์์ด์๊ทธ๋จ์ธ์ง ์ฌ๋ถ๋ฅผ ๋ฆฌํดํ๊ธฐ ๐ ๋ฌธ์ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ์์ด์๊ทธ๋จ์ธ์ง ์ฌ๋ถ๋ฅผ ๋ฆฌํดํด์ผ ํฉ๋๋ค. ์์ด์๊ทธ๋จ(isogram)์ ๊ฐ ์ํ๋ฒณ์ ํ๋ฒ์ฉ๋ง ์ด์ฉํด์ ๋ง๋ ๋จ์ด๋ ๋ฌธ๊ตฌ๋ฅผ ๋งํฉ๋๋ค. โ ๏ธ ์ฃผ์์ฌํญ - ๋น ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ๊ฒฝ์ฐ, true๋ฅผ ๋ฆฌํดํด์ผ ํฉ๋๋ค. - ๋์๋ฌธ์๋ ๊ตฌ๋ณํ์ง ์์ต๋๋ค. โ๐ป ๋ด ํ์ด function isIsogram(str) { // ๋์๋ฌธ์ ๊ตฌ๋ถ์ ์์ ๊ธฐ ์ํด ๋ฌธ์๋ฅผ ์๋ฌธ์๋ก ๋ฐ๊ฟ์ฃผ๋ ์๋ก์ด ๋ฌธ์๋ฅผ ํ ๋นํ๋ ๋ณ์ let newStr = str.toLowerCase(); // true์ false๋ฅผ ๋ํ๋ผ์ ์๋ result๋ณ์๋ฅผ ์ ์ธ let result = true; // str์ ๊ธธ์ด๊ฐ 0์ด๋ฉด if(str.length === 0){ // result = true๋ฅผ ๋ฐํ return result; } for.. 2023. 4. 5. num1์ num2๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๋ฆฌํดํ๊ธฐ ๐ ๋ฌธ์ ๋ ์(num1, num2)๋ฅผ ์ ๋ ฅ๋ฐ์, num1์ num2๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ ๏ธ ์ฃผ์์ฌํญ - ๋๋์ (/), ๋๋จธ์ง(%) ์ฐ์ฐ์ ์ฌ์ฉ์ ๊ธ์ง๋ฉ๋๋ค. - 0์ ์ด๋ค ์๋ก ๋๋์ด๋ ๋๋จธ์ง๊ฐ 0์ ๋๋ค. - ์ด๋ค ์๋ 0์ผ๋ก ๋๋ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ 'Error: cannot divide by zero'๋ฅผ ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ๐ป ๋ด ํ์ด: for๋ฌธ ์ฌ์ฉ function modulo(num1, num2) { let result = 0; // ๋ง์ฝ num2๊ฐ 0์ด๋ฉด if (num2 === 0) { // 'Error~'๋ฅผ ๋ฆฌํด return 'Error: cannot divide by zero' } // num2 * i = num1 for (let i = 0; i < num1; i++) .. 2023. 4. 4. ๊ฐ ์์๋ค์ด ๊ทธ ์ด์ ์ ์์๋ค์ ํฉ๋ณด๋ค ํฐ์ง ์ฌ๋ถ๋ฅผ ๋ฆฌํดํ๊ธฐ ๐ ๋ฌธ์ ์๋ฅผ ์์๋ก ๊ฐ๋ ๋ฐฐ์ด์ ์ ๋ ฅ๋ฐ์ ๊ฐ ์์๋ค์ด ๊ทธ ์ด์ ์ ์์๋ค์ ํฉ๋ณด๋ค ํฐ์ง ์ฌ๋ถ๋ฅผ ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ ๏ธ ์ฃผ์์ฌํญ - boolean ํ์ ์ ๋ฆฌํดํด์ผ ํฉ๋๋ค. - arr[i]๋ arr[0]๋ถํฐ arr[i-1]๊น์ง์ ํฉ๋ณด๋ค ์ปค์ผ ํฉ๋๋ค. โ๐ป ๋ด ํ์ด function superIncreasing(arr) { // ์ด๊ธฐ๊ฐ ์ค์ let sum = arr[0]; // 1๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ ๋ฐ๋ณตํด์ ๋ํด์ฃผ๋ค๊ฐ for (let i = 1; i < arr.length; i++) { // sum์ด ๋ค์ ์ธ๋ฑ์ค๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด if (arr[i] 2023. 3. 31. 2์ฐจ์ ๋ฐฐ์ด์์ ํน์ ๋ฌธ์์ด์ ์์น์ ๋ณด๋ฅผ ์์๋ก ๊ฐ๋ ๋ฐฐ์ด ๋ฆฌํดํ๊ธฐ ๐ ๋ฌธ์ 2์ฐจ์ ๋ฐฐ์ด(๋ฐฐ์ด์ ์์๋ก ๊ฐ๋ ๋ฐฐ์ด)์ ์ ๋ ฅ๋ฐ์ 'B'์ ์์น ์ ๋ณด๋ฅผ ์์๋ก ๊ฐ๋ ๋ฐฐ์ด์ ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ ๏ธ ์ฃผ์์ฌํญ - arr, arr[i]์ ๊ธธ์ด๋ ๋ค์ํ๊ฒ ์ฃผ์ด์ง๋๋ค. - ํญ์ ํ ๊ฐ์ ๋ฌธ์์ด 'B'๊ฐ ์กด์ฌํฉ๋๋ค. โ๐ป ๋ด ํ์ด function findBugInApples(arr) { // ๋ฌธ์์ด์ ํ์ ์ํ for(let i = 0; i < arr.length; i++) { // ๋ฌธ์์ด์ ์ด์ ์ํ for(let j = 0; j < arr[i].length; j++) { // ํด๋น ํ์ด์ B๊ฐ ์๋ค๋ฉด if (arr[i][j] === 'B') { // ์ธ๋ฑ์ค ๋ฆฌํด return [i, j]; } } } } ๐ก ์์๋๋ฉด ์ข์ ๊ฐ๋ ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ (์ค์ฒฉ for๋ฌธ)์ ํ์ฉ for(let i =.. 2023. 3. 29. ์ฐ์๋ ํ์๋ฆฌ ํ์ ์ซ์ ์ฌ์ด์ - ๋ฅผ ์ถ๊ฐํ ๋ฌธ์์ด์ ๋ฆฌํดํ๊ธฐ ๐ ๋ฌธ์ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ์ฐ์๋ ํ์๋ฆฌ ํ์ ์ซ์ ์ฌ์ด์ '-'๋ฅผ ์ถ๊ฐํ ๋ฌธ์์ด์ ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ ๏ธ ์ฃผ์์ฌํญ 0์ ์ง์๋ก ๊ฐ์ฃผํฉ๋๋ค. โ๐ป ๋ด ํ์ด: parseInt( )๋ก ์ ์ ๋ฐํ function insertDash(str) { let newStr = str.charAt(0); // ๋ฌธ์์ด ์ํ ํ ์ธ๋ฑ์ค ๋จ์๋ก ์ชผ๊ฐ๊ธฐ for(let i=1; i 2023. 3. 27. ๋ฌธ์์ด์ ๋ฑ์ฅํ๋ ๋ ์นธ์ ๊ณต๋ฐฑ์ ๋ชจ๋ ํ ์นธ์ ๊ณต๋ฐฑ์ผ๋ก ๋ฐ๊พผ ๋ฌธ์์ด์ ๋ฆฌํดํ๊ธฐ ๐ ๋ฌธ์ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ํด๋น ๋ฌธ์์ด์ ๋ฑ์ฅํ๋ ๋ ์นธ์ ๊ณต๋ฐฑ์ ๋ชจ๋ ํ ์นธ์ ๊ณต๋ฐฑ์ผ๋ก ๋ฐ๊พผ ๋ฌธ์์ด์ ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ ๏ธ ์ฃผ์์ฌํญ - ๋ ์นธ์ ์ด๊ณผํ๋ ๊ณต๋ฐฑ์ ์กด์ฌํ์ง ์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. โ๐ป ๋ด ํ์ด : ์ง์ ๊ณต๋ฐฑ ์ฌ๋ถ ํ๋จํ๋ ๋ณ์ ์ ์ธ function convertDoubleSpaceToSingle(str) { // ๋น ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ๊ฒฝ์ฐ, ๋น ๋ฌธ์์ด ๋ฆฌํดํ๋ ๊ฒฐ๊ณผ๊ฐ ์ ์ธ let result = ''; // ๊ฐ ๋ฌธ์ ์ง์ ๊ณต๋ฐฑ ์ฌ๋ถ ํ๋จํ๋ ๋ณ์ ์ ์ธ let beforeSpace = ''; // for loop๋ก ํด๋น ๋ฌธ์์ด ๊ธธ์ด๋งํผ ์ํํด์ for (let i = 0; i < str.length; i++) { // ์ง์ ๋ฌธ์๊ฐ ๊ณต๋ฐฑ์ด๊ณ , ํ์ฌ ๋ฌธ์๋ ๊ณต๋ฐฑ์ธ ๊ฒฝ์ฐ (์ฆ, ํ์ฌ ๋ฌธ์๊ฐ ๋ .. 2023. 3. 23. ๋ฌธ์์ด์ ๊ตฌ์ฑํ๋ ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๊ฐ ๋๋ฌธ์์ธ ๋ฌธ์์ด์ ๋ฆฌํดํ๊ธฐ ๐ ๋ฌธ์ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ๊ตฌ์ฑํ๋ ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๊ฐ ๋๋ฌธ์์ธ ๋ฌธ์์ด์ ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ ๏ธ ์ฃผ์์ฌํญ - ๋จ์ด๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค. - ์ฐ์๋ ๊ณต๋ฐฑ์ด ์กด์ฌํ ์ ์์ต๋๋ค. - ๋น ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ๊ฒฝ์ฐ, ๋น ๋ฌธ์์ด์ ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ๐ป ๋ด ํ์ด function letterCapitalize(str) { // ์ ๋ ฅ: str // ์ถ๋ ฅ: ๋ฌธ์์ด์ ๊ตฌ์ฑํ๋ ๊ฐ ๋จ์ด๋ค์ ์ฒซ ๊ธ์๊ฐ ๋๋ฌธ์๋ก ๋ ๋ฌธ์์ด ๋ฆฌํด // ๋น์ด์๋ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด์ space๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ ๋จ์ด๋ก ์๋ผ, ๋ฐฐ์ด์ ์ ์ฅ let words = str.split(' '); // ์์ ๋ฐฐ์ด์ ๋ฌธ์์ด ๊ธธ์ด๊น์ง for loop๋ฅผ ๋๋ ค for (let i = 0; i < words.length; i++) { // ๊ฐ .. 2023. 3. 21. ์์๊ฐ ๋ค์งํ ๋ฌธ์์ด์ ๋ฆฌํดํ๊ธฐ ๐ ๋ฌธ์ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ์์๊ฐ ๋ค์งํ ๋ฌธ์์ด์ ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ๐ป ๋ด ํ์ด: for loop ํ์ฉ function firstReverse(str) { // ์ ๋ ฅ: str // ์ถ๋ ฅ: ์์๊ฐ ๋ค์งํ ๋ฌธ์์ด // ์๋ก ์์ฑ๋ ๋ฌธ์์ด์ ๋ด์ ๋น ๋ฌธ์์ด ๋ง๋ค๊ธฐ let result = ''; // for loop) ๋ฐ๋ณต๋ฌธ์ ์์์ ์ ๋ฌธ์์ด์ ๋ง์ง๋ง ๋ฌธ์์ ์ธ๋ฑ์ค์ธ str.length -1์ // i๊ฐ 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์ฝ๋๋ ๋ฐ๋ณต์ ์ผ๋ก ์ํ๋๊ณ , ์ด๋๋ง๋ค i์ ๊ฐ์ ์ค์ for (let i = str.length -1; i >= 0; i--) { result = result + str[i]; // or result += str[i]; } // ๋ฐ์ ๋ ๋ฌธ์์ด์ ๋ฐํ return result; } โ๐ป ๋๋ค.. 2023. 3. 21. ๋ฌธ์์ด์ ๊ตฌ์ฑํ๋ ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ ๋ฆฌํดํ๊ธฐ ๐ ๋ฌธ์ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ๊ตฌ์ฑํ๋ ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ ๏ธ ์ฃผ์์ฌํญ - ๋จ์ด๋ ๊ณต๋ฐฑ ํ ์นธ์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค. - ์ฐ์๋ ๊ณต๋ฐฑ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. - ๋น ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ๊ฒฝ์ฐ, ๋น ๋ฌธ์์ด์ ๋ฆฌํดํด์ผ ํฉ๋๋ค. โ๐ป ๋ด ํ์ด function firstCharacter(str) { // ์ ๋ ฅ: str // ์ถ๋ ฅ: ๋ฌธ์์ด์ ๊ตฌ์ฑํ๋ ๊ฐ ๋จ์ด์ '์ฒซ ๊ธ์'๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด // ๋น ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ๊ฒฝ์ฐ, ๋น ๋ฌธ์์ด์ ๋ฆฌํด if (str === '') { return ''; } // ๋น์ด์๋ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด์ space๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ ๋จ์ด๋ก ์๋ผ, ๋ฐฐ์ด์ ์ ์ฅ let words = str.split(' '); let result = ''; // ๋ชจ.. 2023. 3. 21. ์ด์ 1 2 ๋ค์