일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Algorithm
- Crawling
- 가천대
- 타입 챌린지
- 수학
- 알고리즘
- dfs
- 크롤링
- 타입스크립트
- 문자열
- 프로그래머스 레벨 2
- ip
- Node.js
- 그래프
- Nestjs
- HTTP 완벽 가이드
- typescript
- socket
- 백준
- 프로그래머스
- type challenge
- 자바스크립트
- 소켓
- 쉬운 문제
- javascript
- BFS
- 레벨 1
- HTTP
- TCP
- dp
- Today
- Total
목록알고리즘 (82)
kakasoo
// 프로그래머스 level1 나누어 떨어지는 수 문제를 풀었습니다. function solution(arr, divisor) { var answer = []; arr.map((el, i) => { if (!(el % divisor)) { answer.push(el); } }) if (!answer.length) answer.push(-1); return answer.sort((o1,o2) => o1 - o2); } 딱히 설명할 게 없는 코드다.
// 프로그래머스 level1 같은 수는 싫어 function solution(arr) { let answer = []; arr.map((el, i) => { if (arr[i] !== arr[i-1]) { answer.push(el); } }) return answer; }
// 프로그래머스 level1 가운데 글자 가져오기 function solution(s) { let answer = s.split(''); while(answer.length >= 3) { answer.pop(); answer.shift(); } return answer.join(''); } 가운데 글자를 찾기보다, 그냥 맨앞과 끝에서 한 글자 씩 지워 나가면서 1개 또는 2개 글자가 남을 때까지 반복하게 했다. 그래서 남은 글자를 반환한다.
// 프로그래머스 level1 2016년 문제를 풀었습니다. function getDays(month) { switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 2: return 29; default: return 30; } } function whatDay(answer) { if (answer === 0) return 'FRI'; if (answer === 1) return 'SAT'; if (answer === 2) return 'SUN'; if (answer === 3) return 'MON'; if (answer === 4) retu..
// 프로그래머스 level1 체육복 function solution(n, lost, reserve) { var answer = 0; let array = new Array(n).fill(1); lost.map((losted, i) => {array[losted - 1]--}); reserve.map((rserv, i) => {array[rserv - 1]+= 1}); let count = 0; for (let i = 0; i 0) { count++; } else if (array[i] === 0 && array[i+1] > 1) { count++; array[i+1]--; } else if (array[i] === 0 && array[..
// 프로그래머스 level1 모의고사 const first = [1,2,3,4,5]; const second = [2,1,2,3,2,4,2,5]; const third = [3,3,1,1,2,2,4,4,5,5]; function checkTest (answers, submits) { let count = 0; for (let i = 0; i < answers.length; i++) { if (answers[i] === submits[i % submits.length]) { count++; } } return count; } function solution(answers) { var answer = []; let point = []; point.push(checkTest(answers, first)); ..
// 프로그래머스 level1 k번째 수 const solution = (array, commands) => new Array(commands.length).fill(0).map((el, i) => i + 1).map(el => array.slice(commands[el-1][0] - 1, commands[el-1][1]).sort((o1, o2) => o1 - o2)[commands[el-1][2] -1]); 이 때 내가 왜 이렇게 풀었는지 기억이 나지 않는다. 그냥 함수형 컨셉을 해보고 싶었던 모양이다. 당연히 저런 가독성 없는 코드를 평소에도 짜는 건 아니다. const solution = (array, commands) => { const answer = []; commands.forEach((l..
const checkDoll = (stack, curCount) => { stack.some((el, i) => { if(stack[i] === stack[i+1]) { stack.pop(); stack.pop(); curCount += 2; } }) return curCount; } const solution = (board, moves) => { let answer = 0; let stack = []; moves.map((el) => { board.some((row, height) => { if(row[el -1] != 0) { stack.push(row[el -1]); answer = checkDoll(stack, answer); row[el -1] = 0; return true; } }); });..
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", (line) => { main(line); }).on("close", () => process.exit()); /** * * @param {string} line */ const main = (line) => { const [N, K] = line.split(" ").map(Number); const arr = new Array(N).fill(0).map((el, i) => i + 1); let answer = "
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let N = 0; const input = []; rl.on("line", (line) => { if (!N) { N = Number(line); } else { input.push(line); if (input.length === N - 1) { main(); } } }); const main = () => { const graph = []; const answer = []; for (let i = 1; i { const [from, to] = edge.split(" "); gr..
시간 초과를 해결했더니, 공간 복잡도가 높아지는 문제가 있었다. 일반적으로, dfs로 해서 해결될만한 문제 같은데, 35% 이상을 넘어가면 런타임 에러가 발생했다. ( 중간에 CannotFindModule은 자동완성 때문에 그러하다. ) 내 개인적인 생각으로는, 스택 영역이 고갈되었기 때문이다. 사실, StackSizeExceeded라고 써있으니 당연한 거 아닌가, 생각할 수 있겠지만, 그래도 생각해볼 부분이 나름 있다. 자바스크립트의 변수는 다른 언어들보다 좀 크다. 숫자의 경우의 8바이트, 기본적으로 모든 숫자가 double이기 때문이다. 그러니깐 잘 짜려고 노력해도 남들보다 변수를 2배 이상 가지고 있으니, 똑같은 함수여도 가끔씩 stack이 고갈된다. 따라서 정적인 영역 ( 데이터 영역 )으로 조..
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const graph = []; let N, M; rl.on("line", (line) => { if (!N) { [N, M] = line.split(" ").map(Number); } else { graph.push(line.split("")); if (graph.length === N) { main(); process.exit(); } } }); const main = () => { let visited = []; const xMove = [0, 0, -1, 1]; const y..