일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- frontend roadmap study
- 프로그래머스 데브코스 프론트엔드 TIL
- 개발자 특강
- 프로그래머스 데브코스 프론트엔드
- useRef 지역 변수
- 백준 js
- TypeScript 문법 소개
- 모던 자바스크립트 TIL
- 투포인터알고리즘 js
- Frontend Roadmap
- 인프런 자바스크립트 알고리즘 문제풀이
- Vue3
- 모던 자바스크립트 Deep Dive
- K_Digital Training
- 백준 node.js
- 리팩토링 회고
- react 프로젝트 리팩토링
- useEffect return
- 머쓱이
- 프로그래머스 K_Digital Training
- 모던 자바스크립트 딥다이브
- 모던 javascript Deep Dive
- 프로그래머스 데브코스
- KDT 프로그래머스 데브코스 프론트엔드
- 모던 자바스크립트 Deep Dive TIL
- Vue3 Router
- 프로그래머스 K_Digital Training 프론트엔드
- react customHook 예시
- 우테캠 회고록
- KDT 프로그래머스
- Today
- Total
목록알고리즘_JS/프로그래머스_Level2 (8)
프론트엔드 개발자의 기록 공간
🚩 프로그래머스 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 =..
🚩 프로그래머스 Level2 조이스틱 -> 탐욕법(Greedy) 📖 문제 설명 두번째 그림과 같이 오락실 게임에서 이름 등록 과정을 생각하면 이해하기 좋습니다. 위아래 방향키는 알파벳 순서를 의미하고, 왼쪽오른쪽 방향키는 문자의 위치를 의미합니다. 주어진 문자열을 만들기 위해서는 최소한 몇번의 조작으로 만들수 있는지 구하면 됩니다. 즉, 왼쪽 오른쪽 방향키 횟수 + 위쪽 오른쪽 방향키 횟수 입니다. 👉 소스 코드 ⏰시간복잡도 O(n^2) function solution(name) { var answer = 0; //좌우 이동 값 //최대로 많이 움직이는 경우는 길이만큼 이동이므로 길이값만큼 설정 let min = name.length - 1; for(let i=0; i
🚩 프로그래머스 Level2 타켓 넘버 -> 깊이/너비 우선탐색(DFS/BFS) 📖 문제 설명 주어진 numbers에서 덧셈, 뺄셈을 해서 전부 가능한 경우의 수를 구하면 된다. 그렇게 구한 경우의 수를 target과 비교해서 맞으면 1, 아니면 0을 리턴하면 된다. 👉 소스 코드 ⏰시간복잡도 O(2^n) function solution(numbers, target) { var answer = 0; //numbers, target, 양수(음수)값, 인덱스를 넘겨줌 answer = targetNumber(numbers, target, numbers[0], 1) + targetNumber(numbers, target, numbers[0] * -1, 1); return answer; } function tar..
🚩 프로그래머스 Level2 오픈채팅방 -> 2019 KAKAO BLIND 채용문제 📖 문제 설명 말 그대로 카카오톡에서 사용되는 오픈채팅방의 기능을 구현하는 문제이다. 오픈채팅방에 들어오거나 나가게 되면 해당 닉네임이 로그로 남게 된다. 그리고 닉네임을 바꾸게 되면 모든 로그의 닉네임이 바뀐다. 사용자는 유저 아이디를 가지고 있기 때문에 이를 이용하여 구별한다. 👉 소스 코드 ⏰시간복잡도 O(n) function solution(record) { var answer = []; let map = new Map(); let result = []; for(let records of record){ //record입력 띄어쓰기 기준 자르기 let [check, uid, name] = records.split(..
🚩 프로그래머스 Level2 짝지어 제거하기 📖 문제 설명 progresses(작업진도) + speeds(작업속도) = 진행률입니다. 진행률이 100%가 되면 배포가 진행되는데 이때 배포되는 기능의 수를 각 단계마다 저장하면된다. 주의할점은 앞에 기능이 배포가 되어야지만 뒤에가 배포가 됩니다. 👉 소스 코드 ⏰시간복잡도 O(n^2) function solution(progresses, speeds) { var answer = []; //배포된 기능의 수 let deploy = 0; //모든 작업이 끝날때까지 while(progresses.length > 0){ //진행률 계산 for(let i=0; i= 100){ deploy +=1; progresses.shift(); speeds.shift(); } ..