프로그래머스
-
문제 이름 : 가장 먼 노드 function solution(n, vertex) { let answer = []; const graph = Array.from(Array(n + 1), () => new Array()); for (const el of vertex) { graph[el[0]].push(el[1]); graph[el[1]].push(el[0]); } const bfs = (start, count) => { let queue = [[start, count]]; let visited = new Array(n + 1).fill(false); visited[1] = true; while (queue.length) { let [next, count] = queue.shift(); for (const ..
[Programmers] 가장 먼 노드 문제 - (javascript)문제 이름 : 가장 먼 노드 function solution(n, vertex) { let answer = []; const graph = Array.from(Array(n + 1), () => new Array()); for (const el of vertex) { graph[el[0]].push(el[1]); graph[el[1]].push(el[0]); } const bfs = (start, count) => { let queue = [[start, count]]; let visited = new Array(n + 1).fill(false); visited[1] = true; while (queue.length) { let [next, count] = queue.shift(); for (const ..
2022.05.05 -
문제 이름 : 이중우선순위큐 function solution(operations) { let minHeap = [null]; let maxHeap = [null]; const swap = (m, a, b) => { if (m === "min") { [minHeap[a], minHeap[b]] = [minHeap[b], minHeap[a]]; return; } [maxHeap[a], maxHeap[b]] = [maxHeap[b], maxHeap[a]]; }; const minHeapPush = (value) => { minHeap.push(value); let curIdx = minHeap.length - 1; let parIdx = (curIdx / 2) >> 0; while (curIdx > 1 && ..
[Programmers] 이중우선순위큐 문제 - (javascript)문제 이름 : 이중우선순위큐 function solution(operations) { let minHeap = [null]; let maxHeap = [null]; const swap = (m, a, b) => { if (m === "min") { [minHeap[a], minHeap[b]] = [minHeap[b], minHeap[a]]; return; } [maxHeap[a], maxHeap[b]] = [maxHeap[b], maxHeap[a]]; }; const minHeapPush = (value) => { minHeap.push(value); let curIdx = minHeap.length - 1; let parIdx = (curIdx / 2) >> 0; while (curIdx > 1 && ..
2022.05.03 -
문제 이름 : 다단계 칫솔 판매 문제 내용이 길어 링크로 첨부합니다. https://programmers.co.kr/learn/courses/30/lessons/77486 function solution(enroll, referral, seller, amount) { let graph = Array.from(Array(enroll.length), () => Array()); let money = Array.from(Array(enroll.length), () => Array()); // 저는 bfs 형식을 사용했지만 단방향 상승밖에 없기 때문에 // dfs를 사용하여도 전혀 상관 없습니다. const upToCenter = (name, amount) => { const startIdx = enroll.i..
[Programmers] 다단계 칫솔 판매 문제 - (javascript)문제 이름 : 다단계 칫솔 판매 문제 내용이 길어 링크로 첨부합니다. https://programmers.co.kr/learn/courses/30/lessons/77486 function solution(enroll, referral, seller, amount) { let graph = Array.from(Array(enroll.length), () => Array()); let money = Array.from(Array(enroll.length), () => Array()); // 저는 bfs 형식을 사용했지만 단방향 상승밖에 없기 때문에 // dfs를 사용하여도 전혀 상관 없습니다. const upToCenter = (name, amount) => { const startIdx = enroll.i..
2022.05.02 -
문제 이름 : [1차] 추석 트래픽 function solution(lines) { let answer = 0; const array = []; let count = 0; /* HH:MM:SS.MILI GAP(s) 를 기준으로 값을 받아서 time을 mili초 단위로 변경시켜서 계산합니다. **중요한 것은 end 시간은 1초만큼 더해주어야 예제 2번과 같은 경우를해결할 수 있습니다. */ const changeTimes = (h, m, s, mili, gap) => { const time = ((Number(h)*3600)+(Number(m)*60)+Number(s))*1000+(Number(mili)); array.push([time-(Number(gap)*1000)+1, 'start']); array..
[Programmers] [1차] 추석 트래픽 문제 - (javascript)문제 이름 : [1차] 추석 트래픽 function solution(lines) { let answer = 0; const array = []; let count = 0; /* HH:MM:SS.MILI GAP(s) 를 기준으로 값을 받아서 time을 mili초 단위로 변경시켜서 계산합니다. **중요한 것은 end 시간은 1초만큼 더해주어야 예제 2번과 같은 경우를해결할 수 있습니다. */ const changeTimes = (h, m, s, mili, gap) => { const time = ((Number(h)*3600)+(Number(m)*60)+Number(s))*1000+(Number(mili)); array.push([time-(Number(gap)*1000)+1, 'start']); array..
2022.05.02 -
문제 이름 : 기능개발 function solution(progresses, speeds) { let answer = {}; let maxValue = 0; progresses.map((el,idx)=> { const need = (100-el) % speeds[idx] === 0 ? (100-el)/speeds[idx] : Math.floor((100-el)/speeds[idx])+1; maxValue = Math.max(maxValue, need); answer[maxValue] = (answer[maxValue] || 0) +1; }) return Object.values(answer); } * 100에서 현재 진행된 기능을 빼고 이를 이용해 남은 일자를 구해줍니다. 이 일자는 앞보다 작을 수 없다..
[Programmers] 기능개발 문제 - (javascript)문제 이름 : 기능개발 function solution(progresses, speeds) { let answer = {}; let maxValue = 0; progresses.map((el,idx)=> { const need = (100-el) % speeds[idx] === 0 ? (100-el)/speeds[idx] : Math.floor((100-el)/speeds[idx])+1; maxValue = Math.max(maxValue, need); answer[maxValue] = (answer[maxValue] || 0) +1; }) return Object.values(answer); } * 100에서 현재 진행된 기능을 빼고 이를 이용해 남은 일자를 구해줍니다. 이 일자는 앞보다 작을 수 없다..
2022.04.24 -
문제 이름 : 최고의 조합 function solution(n, s) { const middleValue = Math.floor(s / n); if (middleValue === 0) return [-1]; const upCaseCount = s % n; let answer = new Array(n).fill(middleValue); for (let i = 0; i < upCaseCount; i++) { answer[answer.length - 1 - i]++; } return answer; } * 고민을 좀 하면 간단한 문제다. 곱셈해서 가장 높은 수가 되어야 하는데 그럼 최대한 중간에 가까운 수만 모여있어야 한다. 그러면 s를 n으로 나눠 내림한 수가 중간 수가 되고, 나머지만큼만 각각 +1해주면 총..
[Programmers] 최고의 조합 문제 - (javascript)문제 이름 : 최고의 조합 function solution(n, s) { const middleValue = Math.floor(s / n); if (middleValue === 0) return [-1]; const upCaseCount = s % n; let answer = new Array(n).fill(middleValue); for (let i = 0; i < upCaseCount; i++) { answer[answer.length - 1 - i]++; } return answer; } * 고민을 좀 하면 간단한 문제다. 곱셈해서 가장 높은 수가 되어야 하는데 그럼 최대한 중간에 가까운 수만 모여있어야 한다. 그러면 s를 n으로 나눠 내림한 수가 중간 수가 되고, 나머지만큼만 각각 +1해주면 총..
2022.04.21