전체 글
-
[프로그래머스] 최고의 집합코딩테스트 2023. 6. 4. 21:30
function solution(n, s) { if(n>s) return [-1] //자연수 n개로 이루어진 집합중에 합이 s가 되는 집합. 인데 곱했을때 제일 커야됨. 그러면 즉, 각각원소의 크기가 차이가 덜나는 경우.. let num = Math.floor(s/n) let arr = Array.from({length:n},()=>num) let sum = arr.reduce((acc,cur)=>acc+cur) let rest = s-sum //이제 rest를 하나씩 뿌리면 됨 while(rest>0){ for(let i=arr.length-1;i>=0;i--){ arr[i]+=1 rest-=1 if(rest===0){ break; } } } return arr; }
-
[힙이용해서 풀어보기/프로그래머스] 이중우선순위큐코딩테스트 2023. 6. 4. 21:03
function solution(operations) { var answer = []; let queue = []; for(let i=0;ia-b); queue.pop(); }else if(operations[i]==='D -1'){ queue = queue.sort((a,b)=>b-a) queue.pop(); } } if(!queue.length) return [0,0] const min = Math.min(...queue) const max = Math.max(...queue) return [max,min]; } 쉽게풀었다. 정석은 힙을 이용해서 해야한다고 하는데, 자바스크립트에서는 힙을 지원하지 않는다.
-
[한번더/프로그래머스] 줄 서는 방법카테고리 없음 2023. 6. 4. 17:30
function solution(n, k) { var answer = []; const arr = Array.from({length:n+1},(_,i)=>i) return getKth(arr,k) } function getKth (arr,k){ if(k===1) return arr.slice(1) if(k===0) return arr.slice(1).sort((a,b)=>b-a) if(arr.length===1) return arr const n = arr.length-1 let unit = factorial(n-1) let first = Math.ceil(k/unit) let rest = k%unit let newArr = [...arr.slice(0,first),...arr.slice(first+1)..
-
[못풀었다/프로그래머스] 배달코딩테스트 2023. 5. 31. 11:33
function solution(N, road, K) { const dist = Array(N+1).fill(Infinity) const adj = Array.from({length:N+1},()=>[]) road.forEach((el)=>{ const [r1,r2,t] = el adj[r1].push({to:r2,time:t}) adj[r2].push({to:r1,time:t}) }) let queue = [{to:1,time:0}] dist[1] = 0; while(queue.length){ let {to,time} = queue.pop(); adj[to].forEach((next)=>{ if(dist[next.to]>dist[to]+next.time){ dist[next.to] = dist[to]+..
-
[못풀었다/프로그래머스/js] 멀쩡한 사각형코딩테스트 2023. 5. 18. 16:21
function solution(w, h) { var answer = 1; //w와 h의 최대공약수를 구해야함... let maxDivisor = Math.min(w,h) for(let i=maxDivisor;i>0;i--){ if(w%i===0&h%i===0){ maxDivisor = i; break; } } const minW = w/maxDivisor const minH = h/maxDivisor const diagonal = (minW+minH-1)*maxDivisor return w*h-diagonal; }