일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Crawling
- HTTP
- 소켓
- BFS
- socket
- 문자열
- 타입 챌린지
- ip
- 자바스크립트
- HTTP 완벽 가이드
- 백준
- javascript
- 레벨 1
- typescript
- 쉬운 문제
- type challenge
- 수학
- 크롤링
- 가천대
- Algorithm
- Nestjs
- TCP
- 타입스크립트
- 프로그래머스
- dp
- 알고리즘
- Node.js
- 그래프
- dfs
- 프로그래머스 레벨 2
- Today
- Total
목록프로그래머스 (67)
kakasoo
// 프로그래머스 레벨 1 숫자 문자열과 영단어를 풀었습니다. const numbers = [ "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", ]; const solution = (s) => { const str = s.split(""); let stack = []; let answer = ""; for (const a of str) { if (isNaN(Number(a))) { stack.push(a); const num = numbers.findIndex((el) => el === stack.join("")); if (num !== -1) { answer += String(num); stack = []; }..
// 프로그래머스 레벨2 n진수 게임을 풀었습니다. // 제너레이터를 활용한 풀이 function* printNumbers(start, n) { for (let i = start; i { const iter = printNumbers(0, n); const answer = []; for (let i = 0; i < t * m; i++) { answer.push(iter.ne..
// 프로그래머스 레벨2 캐시를 풀었습니다. // 아예 LRU에 대한 개념이 없어서, (hit, miss 개념은 안다. ) // 곤란하게 한 문제다. const solution = (cacheSize, cities) => { if (cacheSize === 0) return cities.length * 5; const cache = []; let answer = 0; for (let i = 0; i < cities.length; i++) { const city = cities[i].toUpperCase(); if (cache.includes(city)) { answer += 1; cache.splice(cache.indexOf(city), 1); cache.push(city); } else { answe..
// 프로그래머스 레벨2 점프와 순간 이동을 풀었습니다. const solution = (n) => { // const visited = new Array(n + 1).fill(0).map((el, i) => i); // const dfs = (cur) => { // for (let i = 1; 2 ** i * cur el == 1).length; } dfs로 시간 초과가 떠서 bfs로 고치고, 최적화를 위해서 별 짓을 다 했는데도 시간 초과는 사라지지 않았다. 혹시 그래프적인 방법 외에도 뭔가 있나 고민해봤는데, 2로 나눴을 때의 나머지가 1인 횟수가 아무래도 답인 거 같다. 그래서 2진수로 변환하여 구했다.
// 프로그래머스 레벨 3 가장 먼 노드를 풀었습니다. const solution = (n, edge) => { const map = new Array(n + 1).fill(0); for (let i = 1; i { const [from, to] = el; map[from].push(to); map[to].push(from); }); const visited = new Array(n + 1).fill(0); visited[0] = -1; const bfs = (start) => { const queue = [start]; visited[start] = 1; while (queue.length) { con..
const solution = (dirs) => { const answer = []; let next = { y : 5, x : 5 }; dirs.split('').forEach((dir) => { const cur = next; const funcs = { "U" : function (cur) { return { y : cur.y + 1, x : cur.x }; }, "D" : function (cur) { return { y : cur.y - 1, x : cur.x }; }, "R" : function (cur) { return { y : cur.y, x : cur.x + 1 }; }, "L" : function (cur) { return { y : cur.y, x : cur.x - 1..
const left = 0; const right = 1; const isRight = (arr) => { const stack = []; for (const item of arr) { stack.push(item); if (stack.length >= 2) { while ((stack[stack.length - 2] === '(' && stack[stack.length - 1] == ')') || (stack[stack.length - 2] === '[' && stack[stack.length - 1] == ']') || (stack[stack.length - 2] === '{' && stack[stack.length - 1] ==..
// 프로그래머스 레벨2 2개 이하로 다른 비트를 풀었습니다. const ImSoBoring = (num) => { const bits = num.toString(2).split(""); if (num % 2 === 0) { bits.pop(); return parseInt([...bits, "1"].join(""), 2); } else { bits.unshift("0"); for (let i = bits.length - 1; i >= 0; i--) { if (bits[i] === "0") { bits[i] = "1"; bits[i + 1] = "0"; return parseInt(bits.join(""), 2); } } } }; const solution = (numbers) => { return nu..
// 프로그래머스 레벨2 행렬 테두리 회전하기를 풀었습니다. const rotateMap = (map, query) => { const [row1, col1, row2, col2] = query.map((el) => el - 1); const answer = []; for (let i = col1; i col1; i--) answer.push(map[row2][i]); for (let i = row2; i > row1; i--) answer.push(map[i][col1]); answe..
/** * 1. 단품 메뉴들의 합집합을 만든다. * 2. 단품 메뉴들의 조합을 만든다. ( 중복은 제거하고, length가 2 이상. ) * 3. 조합들과 손님의 주문을 각각 비교하여 횟수를 구한다. * 4. 각 팔린 횟수 중에서 가장 메뉴 가짓수length가 큰 것을 뽑는다. */ const sortString = (str) => str.sort((a, b) => { const aStr = a.split(""); const bStr = b.split(""); while (aStr.length && bStr.length) { const aCode = aStr.shift().charCodeAt(); const bCode = bStr.shift().charCodeAt(); if (aCode === bCode..
// 프로그래머스 레벨2 [1차] 뉴스 클러스터링을 풀었습니다. // const lastOnlyAlphabet = (str) => { // const aCode = 'A'.charCodeAt(); // const zCode = 'Z'.charCodeAt(); // return str.toUpperCase().split('').filter((el) => { // const cur = el.charCodeAt(); // if (aCode