일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- react 프로젝트 리팩토링
- 프로그래머스 데브코스 프론트엔드
- useRef 지역 변수
- 프로그래머스 데브코스 프론트엔드 TIL
- 모던 자바스크립트 Deep Dive
- 모던 자바스크립트 Deep Dive TIL
- 모던 javascript Deep Dive
- 프로그래머스 K_Digital Training
- 모던 자바스크립트 딥다이브
- 우테캠 회고록
- 리팩토링 회고
- react customHook 예시
- 프로그래머스 데브코스
- 모던 자바스크립트 TIL
- 프로그래머스 K_Digital Training 프론트엔드
- 머쓱이
- K_Digital Training
- 백준 js
- Vue3 Router
- frontend roadmap study
- 인프런 자바스크립트 알고리즘 문제풀이
- KDT 프로그래머스
- 개발자 특강
- Frontend Roadmap
- 투포인터알고리즘 js
- KDT 프로그래머스 데브코스 프론트엔드
- Vue3
- TypeScript 문법 소개
- 백준 node.js
- useEffect return
- Today
- Total
목록알고리즘_JS/인프런 JS알고리즘 (17)
프론트엔드 개발자의 기록 공간
🚩 LRU 삽입 정렬 응용 📖 문제 설명 : 캐시의 개수와 작업의 개수가 주어질 때, LRU 알고리즘과 유사하게 작업을 할 수 있게 구성하면 된다. (자세한 내용은 강의 및 문제지 참고) 💡Tip. includes, indexOf 메소드 사용 // LRU 삽입 정렬 응용 (카카오 캐시 문제 변형) // O(n^2) function solution(S, arr) { let answer = [...arr] let cache = new Array(S).fill(0) answer.forEach((el) => { // Cache Miss if (!cache.includes(el)) { // 한 칸씩 뒤로 미룬 후 처음에 작업 삽입 for (let i = cache.length - 2; i >= 0; i--) { ..
🚩 괄호 문자 제거 (스택) 📖 문제 설명 : 입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요. 💡Tip. 제목 그대로 스택 이용 function solution(s) { let answer = '' let stack = [] let str = [] for (let x of s) { stack.push(x) } for (let i = 0; i < s.length; i++) { let tmp = stack.pop() // 여는 괄호 나올 시 if (tmp === '(') { // 저장된 str 배열에서 닫는 괄호를 만날 때 까지 요소 제거 // 닫는 괄호 개수 만큼 반복문을 수행하기 때문에 시간 복잡도에 영향은 크게 미치지 않는다. while..
🚩 모든 아나그램 찾기 📖 문제 설명 : S문자열에서 T문자열과 아나그램이 되는 S의 부분문자열의 개수를 구하는 프로그램을 작성하세요. 아나그램 판별시 대소문자가 구분됩니다. 💡 해쉬, 투포인터, 슬라이딩 윈도우의 기법이 사용된다. function solution(S, T) { let answer = 0 let map1 = new Map() let map2 = new Map() // 초기 슬라이딩 윈도우 크기 세팅 // 비교 대상 고정된 T의 문자열 길이 만큼 Map set for (let i = 0; i < T.length; i++) { if (map1.has(S[i])) { map1.set(S[i], map1.get(S[i]) + 1) } else { map1.set(S[i], 1) } if (map..
🚩 연속 부분 수열 2 -> 투포인터 알고리즘 📖 문제 설명 : 여러 개의 수로 이루어진 수열이 주어집니다. 이 수열에서 연속부분수열의 합이 특정숫자 M이하가 되는 경우가 몇 번 있는지 구하는 프로그 램을 작성하세요. 만약 M=5이고 수열이 다음과 같다면 [1, 3, 1, 2, 3] 합이 5이하가 되는 연속부분수열은 {1}, {3}, {1}, {2}, {3}, {1, 3}, {3, 1}, {1, 2}, {2, 3}, {1, 3, 1}로 총 10가지입니다. input : M = 5 , arr = [1, 3, 1, 2, 3] => output : 10 input : M = 6 , arr = [1, 1, 1, 1, 1] => output : 15 💡Tip. 투포인터 알고리즘으로 이중 for 문으로 전체 탐색을..
🚩 연속 부분 수열 1 -> 투포인터 알고리즘 📖 문제 설명 : 여러 개의 수로 이루어진 수열이 주어집니다. 이 수열에서 연속 부분 수열의 합이 특정 숫자 M이 되는 경우가 몇 번 있는지 구하는 프로그램을 작성하세요. 만약 M=6이고 수열이 다음과 같다면 [1, 2, 1, 3, 1, 1, 1, 2] 합이 6이 되는 연속 부분 수열은 {2, 1, 3}, {1, 3, 1, 1}, {3, 1, 1, 1}로 총 3가지입니다. input : M = 6 , arr = [1, 2, 1, 3, 1, 1, 1, 2] => output : 3 input : M = 6 , arr = [1, 1, 1, 2, 4] => output : 1 💡Tip. 투포인터 알고리즘으로 이중 for 문으로 전체 탐색을 하면 O(n^2)이 되기..