일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Frontend Roadmap
- 프로그래머스 K_Digital Training 프론트엔드
- 프로그래머스 데브코스 프론트엔드 TIL
- K_Digital Training
- Vue3
- 인프런 자바스크립트 알고리즘 문제풀이
- KDT 프로그래머스
- KDT 프로그래머스 데브코스 프론트엔드
- frontend roadmap study
- 모던 자바스크립트 Deep Dive
- 백준 node.js
- 개발자 특강
- 우테캠 회고록
- 모던 자바스크립트 Deep Dive TIL
- 리팩토링 회고
- Vue3 Router
- 프로그래머스 K_Digital Training
- useRef 지역 변수
- TypeScript 문법 소개
- 모던 javascript Deep Dive
- react 프로젝트 리팩토링
- 투포인터알고리즘 js
- useEffect return
- 모던 자바스크립트 TIL
- 프로그래머스 데브코스 프론트엔드
- 모던 자바스크립트 딥다이브
- react customHook 예시
- 프로그래머스 데브코스
- 머쓱이
- 백준 js
- Today
- Total
목록알고리즘_JS (113)
프론트엔드 개발자의 기록 공간
🚩 괄호 문자 제거 (스택) 📖 문제 설명 : 입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요. 💡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)이 되기..
🚩 프로그래머스 Level2 카펫 -> 완전탐색 📖 문제 설명 카펫의 중앙에는 노란색, 테투리는 갈색으로 칠해져 있는 카펫이 있다. 노란색의 격자 수와 갈색의 격자 수가 주어질때, 총 카펫의 가로, 세로의 길이를 구하면 된다. 💡 1. (Tip) 카펫의 최소 높이는 3이라는 점이다. (위의 그림을 보면 이해된다.) 2. 공식 : 갈색과 노란색의 합을 임의의 높이로 나눌때 나오는 높이와 가로 값을 토대로 (가로-2) * (높이-2) = 노란색 격자 수 라면, 현재 높이, 가로의 길이를 찾은 것이다. (-2를 해서 곱한 이유는 양끝의 테투리가 갈색이기 때문에 빼고 계산해준다) 👉 소스 코드 ⏰시간복잡도 O(n) function solution(brown, yellow) { var answer = []; le..
🚩 프로그래머스 Level2 프린터 -> 스택/큐 📖 문제 설명 문제가 명확하게 설명되어 있어서 생략하겠습니다. priorities 순위가 적혀있는 배열과 location 인쇄를 요청한 위치가 주어질때 해당 위치에 해당하는 문서가 몇번째로 출력되는지 파악하면 됩니다. 👉 소스 코드 ⏰시간복잡도 O(n^2) function solution(priorities, location) { var answer = 0; //prioritiese와 쌍을 이루어 중요도에 따른 대기목록 순서를 가진다. let print = Array.from({length: priorities.length}, (v,i) => i); console.log(print) //인쇄를 요청한 문서의 중요도와 순서가 담겨져있다. let find =..