전체 글
-
[릿코드 / js] 다시풀기 1631. Path With Minimum Effort코딩테스트 2023. 9. 18. 12:19
var minimumEffortPath = function(H) { let y = H.length, x = H[0].length, last = x*y-1, vis = new Uint8Array(last+1), dist = new Uint32Array(last+1).fill(1000001), heap = [,], node = 0, path = 0, i, j, cell const heapify = (node, k, l) => { let i = heap.length, par = i >> 1 dist[node] = Math.min(dist[node], Math.max(path, Math.abs(cell - H[k][l]))) heap.push([node,dist[node]]) while (par && heap[..
-
[릿코드/js] 1584. Min Cost to Connect All Points코딩테스트 2023. 9. 16. 23:36
var minCostConnectPoints = function(points) { const n = points.length; let minCost = 0; const visited = new Array(n).fill(false); const distances = new Array(n).fill(Infinity); distances[0] = 0; for (let i = 0; i < n; i++) { let u = getMinDistanceVertex(visited, distances); visited[u] = true; minCost += distances[u]; for (let v = 0; v < n; v++) { if (!visited[v]) { const dist = Math.abs(points[u..
-
[릿코드 / js] 332. Reconstruct Itinerary코딩테스트 2023. 9. 14. 16:49
var findItinerary = function(tickets) { //1.출발점이 JFK인 친구 뽑아냄. //2.도착점 알파벳순으로 정렬하여 제일 처음인 친구로 감. //3. 재귀와 while을 섞어야할듯...? let output = []; tickets.sort(); return recurr(tickets, "JFK", output); }; let check = function(tickets, departure) { if (tickets.length === 0) return true; for (let i = 0; i < tickets.length; i++) { if (tickets[i][0] === departure) { return (check([...tickets.slice(0,i),...t..
-
[릿코드/js] 151. reverse words in string코딩테스트 2023. 9. 14. 10:57
var reverseWords = function(s) { let words = []; let i = 0; while(s[i]) { let word = ""; while(s[i]&& s[i] === ' ') i++; while(s[i] && s[i] !==' ') { word+=s[i]; i++; } if (word !== "") words.push(word) } return words.reverse().join(' '); }; ->처음 풀었던풀이. 이중와일문이지만 시간복잡도는 n^2이 아닐것임. var reverseWords = function(s) { return s.split(" ").reverse().filter(w => w !== "").join(" "); }; -> 이렇게 한 줄로 풀 수도 있..
-
[릿코드/js] 다시풀기 345코딩테스트 2023. 9. 13. 23:19
var reverseVowels = function(s) { let vowelstr = "aeiouAEIOU" let vowelobj = {}; vowelstr.split('').forEach((el,idx) => vowelobj[el] = true); let vowels = []; let output = ""; for (let i = 0; i < s.length; i++) { if (vowelobj[s[i]]) vowels.push(s[i]); } vowels = vowels.reverse(); let j = 0; for (let i = 0; i < s.length; i++) { if (vowelobj[s[i]]) { output += vowels[j]; j++; } else output += s[i]..
-
[릿코드/js] 605. can place flowers코딩테스트 2023. 9. 13. 21:17
var canPlaceFlowers = function(flowerbed, n) { let len = flowerbed.length; if (n === 0 || n === 1 && len === 1 && flowerbed[0] === 0) return true; if (flowerbed[0] === 0 && flowerbed[1] === 0) { n--; flowerbed[0] = 1; } for (let i = 1; i < len - 1; i++) { if (n === 0) return true; if (flowerbed[i] === 0 && flowerbed[i - 1] === 0 && flowerbed[i + 1] === 0) { flowerbed[i] = 1; n--; } } if (flowerb..
-
[릿코드/js] 다시풀기 137.candy코딩테스트 2023. 9. 13. 16:23
var candy = function(ratings) { //일단 하나씩 할당하고, //재귀를 통해 이웃이랑 비교하면서 하나씩 추가하면됨. 와일로도 가능할듯? let child = new Array(ratings.length).fill(1); while(!is_correct(ratings,child)) { const len = child.length; for (let i = 0; i = 0) { if (ratings[i - 1] = child[i]) { child[i] = child[i - 1] + 1; }; } if (i + 1 ratings[i + 1] && child[i] acc + cur); }; l..