사전 과제 (실전 스킬: 비즈니스 로직 완전 정복 with React) 이번 챌린지의 사전 과제는 '글쓰기'입니다. 그동안 개발을 하며 어떤 로직들이 가장 나를 힘들게 했는지 자랑해 주세요. React 컴포넌트여도 좋고, 그 외의 로직이어도 좋습니다. 개발 프로젝트 전반에 대한 얘기도 좋습니다. 공유해 주신 에피소드(썰)들 함께 이야기하며 위로를 받기도, 다른 사람들의 분투기를 보며 새로운 인사이트를 얻을 수도 있었으면 좋겠어요. 이 과정에서 자연스럽게 내가 겪었던 어려움들에 대한 회고가 이뤄질 것으로 기대하고 있어요. 이 점들을 잘 기억해두셨다가 수업 중간중간 공유해 주시면 강의에도, 여러분 자신에게도 도움이 많이 될 거예요. 수업에서 다루기 적합한 포스팅으로 판단될 경우 작성하신 분의 동의를 먼저 구..
전체보기
function solution(n){ function DFS(L){ if(L==0) return; else{ console.log(L); DFS(L-1); } } DFS(n); } // 3 2 1 solution(3); function solution(n){ function DFS(L){ if(L==0) return; else{ DFS(L-1); console.log(L); } } DFS(n); } solution(3); // 1 2 3 위 두 함수의 결과가 다르게 나오는 것을 이해하기 위해 함수 스택 프레임을 알아보았다. 일반적으로 재귀 함수, 콜백 함수, 비동기 작업 시 발생하게 되는데 함수가 LIFO방식의 스택에 쌓이게 된다. 이때 지역 변수, 복귀 주소, 매개변수가 저장된다. 가장 마지막 함수까..
1. .unshift() 배열의 맨 앞에 요소를 추가할 때 .push()가 배열의 맨 뒤에 요소를 추가할 때 사용한다면 앞에 추가할 땐 unshift를 사용하면 된다. const array1 = [1, 2, 3]; console.log(array1.unshift(4, 5)); // Expected output: 5 console.log(array1); // Expected output: Array [4, 5, 1, 2, 3] https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift Array.prototype.unshift() - JavaScript | MDN unshift() 메서드는 새로운 요소..
1. .padEnd() 원하는 길이만큼 채울 때 사용 function solution(n) { let first = '수'; return first.padEnd(n,'박수');; } n=1 수 n=2 수박 n=3 수박수 const str1 = 'Breaded Mushrooms'; console.log(str1.padEnd(25, '.')); // Expected output: "Breaded Mushrooms........" const str2 = '200'; console.log(str2.padEnd(5)); // Expected output: "200 " https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Stri..
0. 선택정렬, 버블정렬과 sort메서드 일반적으로 JavaScript를 사용하면서 오름/내림차순 정렬 시 sort메서드를 사용한다. sort 메서드 사용시 시간복잡도는 O(nlogn)이므로 이중 for문을 사용한 선택/버블정렬의 최선의 경우보다 빠르고 효율적이다. 하지만 기본적인 알고리즘의 정렬 방식을 이해하고 학습하기 위해 사용해 보았다. 1. 선택정렬 가장 작은값, 혹은 가장 큰 값을 맨 앞, 맨 뒤의 값과 위치를 바꾸어준다. function solution(arr){ let answer=arr; for(let i=0; i
1. 소수 판별 function isPrime(num) { if (num = max) { max = stringHash[key]; answer = key; } } return answer; } { 'B': 3, 'A': 2, 'C': 4, 'D': 3, 'E': 3 } ------------------------------------------------ // 해시 function solution(s) { let answer; let max = 0; let stringHash = new Map(); for (let ele of s) { if (!stringHash.has(ele)) { stringHash.set(ele, 1) } else { stringHash.set(ele, stringHash.get(..
1. 룩업 테이블 입력에 따른 결과를 정해둘 때 사용 // 가위바위보 예제 // 1 = 가위, 2 = 바위, 3 = 보 function solution(a, b) { let answer = ""; let lookupTable = { "1-3": "A ", "2-1": "A ", "3-2": "A " }; for (let i = 0; i < a.length; i++) { let key = `${a[i]}-${b[i]}`; if (a[i] === b[i]) answer += "D "; else answer += lookupTable[key] ? lookupTable[key] : "B "; } return answer; } let c=[2, 3, 3, 1, 3]; let d=[1, 1, 2, 2, 3]; co..
1. 깊은 복사 얕은 복사는 원본 배열의 참조만 복사하므로 원본 배열 변경시 복사된 배열도 변경된다. 깊은 복사는 새로운 배열에 복사하기 위해 사용 https://developer.mozilla.org/ko/docs/Glossary/Deep_copy 깊은 복사 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN 객체의 깊은 복사는 복사본의 속성이 복사본이 만들어진 원본 객체와 같은 참조(메모리 내의 같은 값을 가리킴)를 공유하지 않는 복사입니다. 따라서 원본이나 복사본을 변경할 때, 다른 객체가 developer.mozilla.org // 얕은 복사 let arr = [1,2,3] let arrCopy = arr // Spread 연산자 const originalArray = [1, 2, 3..
1. .findIndex()조건을 만족하는 배열의 첫 번째 요소 인덱스 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex Array.prototype.findIndex() - JavaScript | MDNfindIndex() 메서드는 주어진 판별 함수를 만족하는 배열의 첫 번째 요소에 대한 인덱스를 반환합니다. 만족하는 요소가 없으면 -1을 반환합니다.developer.mozilla.orgconst array1 = [5, 12, 8, 130, 44]; const isLargeNumber = (element) => element > 13; console.log(array1.findIndex..