서버 증설 횟수 ( Level 2, JavaScript, 2025 프로그래머스 코드챌린지 2차 예선 ) const solution = (players, m, k) => { let res = 0 const computer = [] for (let i = 0; i computer.length) { let count = Math.floor(players[i] / m) - computer.length res += count while (count--) computer.push(i + k) } } return res}시뮬레이션 그냥 구현하면됨 Algorithm/programmers 2025.02.13
택배 상자 꺼내기 ( Level 1, JavaScript, 2025 프로그래머스 코드챌린지 2차 예선 ) const solution = (n, w, num) => { let res = 1 const total = Math.ceil(n / w) const target = Math.ceil(num / w) const nRemain = n % w || n const numRemain = num % w || num if (total % 2 === target % 2 && nRemain total - 전체 쌓여지는 층 수target - num이 쌓인 층 수total과 target이 같은 방향인지, 반대 방향인지 확인 후 타겟의 위에 상자가 있는지 체크하는 코드를 통해 위에 없는 경우 -1을 해줌 Algorithm/programmers 2025.02.13
지게차와 크레인 ( Level 2, JavaScript, 2025 프로그래머스 코드챌린지 1차 예선 ) const check = (storage, x, y) => { const [xlen, ylen] = [storage.length, storage[0].length] const dx = [-1, 1, 0, 0] const dy = [0, 0, -1, 1] const queue = [[x, y]] const visited = Array.from({ length: xlen }, () => Array(ylen).fill(0)) visited[x][y] = 1 while (queue.length) { const cur = queue.shift() const [x, y] = cur for (let i = 0; i { storage =.. Algorithm/programmers 2025.02.10
비밀 코드 해독 ( Level 2, JavaScript, 2025 프로그래머스 코드챌린지 1차 예선 ) const combinations = (arr, k) => { const result = [] const combine = (start, combo) => { if (combo.length === k) { result.push([...combo]) return } for (let i = start; i { let com = combinations(Array(n).fill(1).map((num, i) => num + i), 5) let res = 0 for (let c of com) { for (let i = 0; i q[i].includes(num)).length !== ans[i]) .. Algorithm/programmers 2025.02.10
유연근무제 ( Level 1, JavaScript, 2025 프로그래머스 코드챌린지 1차 예선 ) const timeToMin = (time) => { return Number(String(time).slice(0, -2)) * 60 + Number(String(time).slice(-2))}const solution = (schedules, timelogs, startday) => { return timelogs.filter((log, logIdx) => { return log.filter((time, timeIdx) => { if ((timeIdx + startday) % 7 === 6 || ((timeIdx + startday) % 7 === 0)) return true return timeToMin(time) 구현시간 처리하고 모듈.. Algorithm/programmers 2025.02.10
유사 칸토어 비트열 ( Level 2, JavaScript, 연습문제 ) const recur = (num) => { if (num % 5 === 2) return 0 if (num { let res = 0 for (let i = l - 1; i 재귀처음에 n을 같이 넘기니 시간이 몇배로 더걸려서 number만 체크하는 로직으로 변경하니 통과 Algorithm/programmers 2025.02.10
테이블 해시 함수 ( Level 2, JavaScript, 연습문제 ) const solution = (data, col, row_begin, row_end) => { return data .sort((a, b) => { const [x, y] = [a[col - 1], b[col - 1]]; return x !== y ? x - y : b[0] - a[0]; }) .slice(row_begin - 1, row_end) .map((row, i) => row.reduce((acc, cur) => acc + (cur % (row_begin + i)), 0)) .reduce((res, cur) => res ^ cur, 0);}배열 단순 가공 Algorithm/programmers 2025.02.09
우박수열 정적분 ( Level 2, JavaScript, 연습문제 ) const solution = (k, ranges) => { const dp = [0], res = [] while (k > 1) { let next = k next = k % 2 ? 3 * next + 1 : k / 2 dp.push((dp.at(-1) ?? 0) + (k + next) / 2) k = next } const len = dp.length - 1 for (let range of ranges) { let [start, end] = range res.push(len + end 구간합 문제 Algorithm/programmers 2025.02.08
전력망을 둘로 나누기 ( Level 2, JavaScript, 연습문제 ) const check = (hash, start, n) => { let count = 0 const queue = [start] const visited = Array(n).fill(0) visited[start] = 1 while (queue.length) { count += 1 const cur = queue.shift() for (let num of hash[cur]) { if (!visited[num]) { queue.push(num) visited[num] = 1 } } } return count}const solut.. Algorithm/programmers 2025.02.08