본문 바로가기

728x90

Algorithm

[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.. 더보기
[NodeJS] 프로그래머스 괄호 변환 const solution = (p) => { const getBalancedString = (s) => { let o = 0; let c = 0; for (let i = 0; i { const stack = []; for (let i = 0; i < s.length; i++) { if (s[i] === '(') { stack.push('('); } els.. 더보기
[NodeJS] 프로그래머스 타켓 넘버 const solution = (nums, target) => { let answer = 0; const sum = (v1, v2, s) => { if (s === 'p') { return v1 + v2; } else { return v1 - v2; } }; const recursive = (ns, v) => { if (ns.length === 0) { if (v === target) { answer++; } return; } const [v2, ...newNs] = ns; recursive(newNs, sum(v, v2, 'p')); recursive(newNs, sum(v, v2, 'm')); }; const [v, ...arr] = nums; recursive(arr, v); recursive(ar.. 더보기
[NodeJS] 프로그래머스 1차 뉴스 클러스터링 const solution = (p) => { const getBalancedString = (s) => { let o = 0; let c = 0; for (let i = 0; i { const stack = []; for (let i = 0; i < s.length; i++) { if (s[i] === '(') { stack.push('('); } els.. 더보기
[NodeJS] 프로그래머스 짝지어 제거하기 const solution = (s) => { const stack = [s[0]]; for (let i = 1; i < s.length; i++) { if (stack[stack.length - 1] !== s[i]) { stack.push(s[i]); } else { stack.pop(); } } return stack.length ? 0 : 1; }; 더보기
[NodeJS] 프로그래머스 소수 찾기 const solution = (nums) => { let answer = 0; const set = new Set(); const recursive = (n, s, len) => { if (s.length === len) { const num = Number(s); if (num > 1) { set.add(num); } return; } for (let i = 0; i < n.length; i++) { const newS = n.substring(0, i) + n.substring(i + 1); recursive(newS, `${s}${n[i]}`, len); } }; for (let i = 1; i 더보기

728x90