본문 바로가기

전체 글105

[React] 디자인 패턴 (MVC, Flux) 디자인패턴 : 어플리케이션 설계 중 자주 발생하는(되풀이되는) 문제에 대한 모범답안 즉, 프로그램을 개발하면서 생기는 문제를 해결하는 모법답안을 말한다. 디자인 패턴을 사용하는 이유? - 검증된 해결책 : 이미 검증된 방식 및 방법으로 해결방안을 찾을 수 있음 -> 효과적으로 코드 개선 - 효율적인 소통방식 : 거대하고 복잡한 코드는 규모가 작을때부터 체계적인 규칙이 필요하다. -> 매번 디테일한 설명을 거치지 않고, 사전에 약속해둔 용어들로 표현할 수 있도록 해준다. -> 의미를 명확하고 효율을 높이고, 체계적인 코드를 만들 수 있음 - 유지보수 용이 : 각각 기능을 담당하는 영역을 분리(관심사별로) 헤서 관리할 수 있도록 설계됨 -> 필요한 부분만 수정 가능 - 상대적으로 코드 레벨에 가까운 디자인 .. 2023. 7. 1.
[React] Custom Hook (useInput) 사용이유 : 코드의 재사용쉬움 (우리의 입맛대로 만들 수 있음) 그냥 함수를 하나 만듦 1. 원하는 이름 짓기 2. 원하는 기능을 함수 안에 구현 해주면 된다. (매개변수와 리턴 값도 마음대로 정할 수 있다) ** 컴포넌트 내부에 있던 로직을 커스텀 훅이라는 함수로 빼주는 역할을 한다! + 커스텀 훅 안에서 다른 React Hook들을 자유롭게 사용할 수 있다는 장점도 있다! + 커스텀 훅을 사용하는 컴포넌트마다 커스텀 훅이 가지는 state와 effect는 완전히 독립적인이기 때문에 재사용성이 아주 큼!!! 이름을 마음대로 지어도 되지만, 커스텀 훅 도 React의 hook 이므로 'use' 라는 키워드를 사용해야함 => 실수를 하더라도 리엑트 자체에서 콘솔에 경고를 잘 띄워줌 (오류 방지용) 1. .. 2023. 6. 19.
알고리즘문제 5 너무어려워이거....완젼히 다 맞지는못했다... function minimumTreePath(n, edges, visitNodes) { const INF = 1e9; const dist = Array(n).fill().map(()=> Array(n).fill(INF)); const visit = visitNodes.map(v => v-1); edges.forEach(([u, v]) =>{ dist[u-1][v-1] =1; dist[v-1][u-1] =1; }); for(let k=0; k < n; k++) for(let i=0; i 2023. 5. 29.
알고리즘문제 4 function longestChain(words) { const dp = {}; words.sort((a,b)=>a.length - b.length); let max = 0; for(const word of words){ let longest = 0; for(let i =0; i< word.length; i++){ const sub = word.slice(0,i) + word.slice(i+1); longest = Math.max(longest, (dp[sub] || 0)+1); } dp[word]=longest; max = Math.max(max, longest); } return max; } 2023. 5. 29.
알고리즘문제 3 function maxLength(a, k) { let start = 0; let sum = 0; let maxLen = 0; for(let end = 0; end k) { sum -= a[start]; start++; } maxLen = Math.max(maxLen, end - start + 1); } return maxLen; } 2023. 5. 29.
알고리즘 문제 2 function findRange(num) { const numStr = num.toString(); let min = 0; let max = 0; let changeIndex = 0; if(numStr[changeIndex] === '1') { changeIndex++; while(changeIndex < numStr.length && (numStr[changeIndex] === '0' || numStr[changeIndex] === '1' )) { changeIndex++; } min = numStr.replaceAll(numStr[changeIndex],'0'); } else { min = numStr.replaceAll(numStr[changeIndex],'1'); } changeIndex = 0.. 2023. 5. 29.