일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- HTTP
- javascript
- Nestjs
- Node.js
- 문자열
- 가천대
- 알고리즘
- HTTP 완벽 가이드
- 자바스크립트
- BFS
- dfs
- 수학
- 소켓
- typescript
- 백준
- TCP
- 타입스크립트
- 그래프
- 쉬운 문제
- ip
- Crawling
- 타입 챌린지
- 프로그래머스 레벨 2
- type challenge
- socket
- dp
- 크롤링
- 레벨 1
- Algorithm
- Today
- Total
목록알고리즘 (82)
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 = []; }..
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", (line) => { const num = Number(line); const rows = new Array(num + 1).fill(0).map((el) => 0); const isAble = (row) => { for (let i = 1; i < row; i++) { if ( rows[i] === rows[row] || Math.abs(rows[row] - rows[i]) === row - i ) { return false; } } return true;..
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let count; const input = []; let maxValue = -987654321; rl.on("line", (line) => { if (!count) { count = Number(line); } else { input.push(line); if (input.length === count) { main(); } } }); const getPermutations = function* (elements) { if (elements.length === 1) { yield..
// 프로그래머스 레벨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 checkArr = (arr) => { const firstValue = arr[0][0]; for (let i = 0; i { const upArr = arr.splice(0, arr.length / 2); const downArr = arr; const upLeftArr = upArr.map((el) => el.splice(0, el.length..
// 프로그래머스 레벨2 튜플을 풀었습니다. const solution = (s) => { // "{{4,2,3},{3},{2,3,4,1},{2,3}}" const arr = s .split("},") .map((str) => { // [ '4,2,3', '3', '2,3,4,1', '2,3' ] return str .split("") .filter((el) => el !== "{" && el !== "}") .join(""); }) .sort((a, b) => { // [ '3', '2,3', '4,2,3', '2,3,4,1' ] return a.length - b.length; }) .m..
// 프로그래머스 레벨2 예상 대진표를 풀었습니다. // 둘 씩 잘라서 계속 붙게 하면 언젠가 만나겠거니, 라는 생각으로 풀었습니다. const getOneRound = (arr) => { const answer = []; for (let i = 0; i { let humans = new Array(n).fill(0); humans[a - 1] = 1; humans[b - 1] = 1; let count = 0; loop1: while (true) { count++; humans = getOneRound(huma..
// 프로그래머스 레벨2 게임 맵 최단 거리를 풀었습니다. const solution = (maps) => { if (!maps[0][0]) { return -1; } const visited = new Array(maps.length); for (let i = 0; i { const queue = [{ y: startY, x: startX }]; visited[startY][startX] = 1; while (q..
// 프로그래머스 레벨 2 [카카오 인턴] 수식 최대화 const getPriority = () => { const operator = ["+", "-", "*"]; const priority = []; let visited; let answer; const dfs = (start) => { visited[start] = true; answer.push(operator[start]); if (answer.length === 3) { priority.push([...answer]); } for (let i = 0; i < operator.length; i++) { if (!visited[i]) { visited[i] = true; dfs(i); visited[i] = false; answer.pop(); ..