Algorithm/programmers 썸네일형 리스트형 [NodeJS] 프로그래머스 다단계 칫솔 판매 const solution = (enroll, referral, seller, amount) => { const idxMap = {}; enroll = enroll.map((name, idx) => { idxMap[name] = idx; return new Node(name); }); referral.forEach((name, idx) => { if (name === '-') return; const parentIdx = idxMap[name]; const parent = enroll[parentIdx]; const me = enroll[idx]; parent.addChild(me); me.setParent(parent); }); for (let i = 0; i < seller.length; i++) {.. 더보기 [NodeJS] 프로그래머스 N으로 표현 const solution = (n, number) => { if (n === number) { return 1; } const memo = [...new Array(9)].map((v, idx) => idx === 0 ? new Set() : new Set([Number(String(n).repeat(idx))]), ); const calc = (i) => { for (let j = 1; j < i; j++) { for (const n1 of memo[j]) { for (const n2 of memo[i - j]) { const plus = n1 + n2; const minus = n1 - n2; const multiplied = n1 * n2; const divided = Math.floor(n1 /.. 더보기 [NodeJS] 프로그래머스 수식 최대화 const solution = (expression) => { let answer = 0; const recursive = (ops, nums, orders) => { if (!orders.length) { answer = Math.max(answer, Math.abs(nums[0])); return; } const [o, ...newOrders] = orders; let idx = ops.findIndex((v) => v === o); while (idx > -1) { ops.splice(idx, 1); let temp; switch (o) { case '+': temp = nums[idx] + nums[idx + 1]; break; case '-': temp = nums[idx] - nums[idx .. 더보기 [NodeJS] 프로그래머스 빛의 경로 사이클 const solution = (grid) => { const answer = []; const m = grid.length; const n = grid[0].length; const visited = []; for (let i = 0; i { let to = from; switch (grid[x][y]) { case 'S': if (to === 0) { x--; } else if (to === 1) { x++; } else if (to === 2) { y--;.. 더보기 [NodeJS] 프로그래머스 튜플 const solution = (s) => { const answer = []; s = JSON.parse(s.replaceAll('{', '[').replaceAll('}', ']')); s.sort((a, b) => a.length - b.length); answer.push(s[0][0]); for (let i = 1; i < s.length; i++) { const arr = s[i]; let temp = arr[0]; for (let j = 1; j < arr.length; j++) { if (!answer.includes(arr[j])) { temp = arr[j]; } } answer.push(temp); } return answer; }; 더보기 [NodeJS] 프로그래머스 행렬 테두리 회전하기 const solution = (rows, columns, queries) => { const answer = []; const columnsList = [...new Array(columns).keys()].map((v) => v + 1); const board = [...new Array(rows).keys()] .map((v) => v + 1) .map((i) => { return columnsList.map((j) => (i - 1) * columns + j); }); for (let i = 0; i v - 1); const moveArr = []; const numAr.. 더보기 [NodeJS] 프로그래머스 다리를 지나는 트럭 const solution = (bridge_length, weight, truck_weights) => { // Array의 무게 합 const getWeight = (arr) => arr.reduce((pre, cur) => pre + cur[0], 0); let answer = 0; // 다리를 건너는 트럭 큐 const queue = []; // truck_weights.shift()대신 idx로 다리를 건널 트럭 선택 let idx = 0; while (queue.length || idx < truck_weights.length) { // 맨 앞의 트럭이 다리를 건널 수 있는 시간이 되면 if (queue.length && queue[0][1] === bridge_length) { queue.s.. 더보기 [NodeJS] 프로그래머스 거리두기 확인하기 const solution = (places) => { const answer = []; for (const p of places) { const result = p.some((r, rIdx) => { return [...r].some((c, cIdx, cArr) => { if (c === 'X') { return false; } let cnt = 0; cnt += (p[rIdx + 1] || [])[cIdx] === 'P' ? 1 : 0; // 상 cnt += (p[rIdx - 1] || [])[cIdx] === 'P' ? 1 : 0; // 하 cnt += cArr[cIdx - 1] === 'P' ? 1 : 0; // 좌 cnt += cArr[cIdx + 1] === 'P' ? 1 : 0; // 우 i.. 더보기 이전 1 2 3 4 5 6 다음