-
[릿코드/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][0] - points[v][0]) + Math.abs(points[u][1] - points[v][1]); //현재 위치 [u]에서부터 [v]까지의 거리. v를 돌면서 추가한다. distances[v] = Math.min(distances[v], dist); //Math.min을 해주는 이유는 현재 위치에서 연결할 필요가 없기 때문임. (하나로 연결만 하면 되기 때문) } } } return minCost; }; var getMinDistanceVertex = function(visited, distances) { let minDist = Infinity; let minVertex = -1; for (let i = 0; i < distances.length; i++) { if (!visited[i] && distances[i] < minDist) { minDist = distances[i]; minVertex = i; } } return minVertex; };
프림 알고리즘을 이용해 풀어야 한다. 너무 어렵다,,
'코딩테스트' 카테고리의 다른 글
[릿코드 / js] 1337. The K Weakest Rows in a Matrix (0) 2023.09.18 [릿코드 / js] 다시풀기 1631. Path With Minimum Effort (0) 2023.09.18 [릿코드/js] 다시풀기 334. Increasing Triplet Subsequence (0) 2023.09.15 [릿코드 / js] 332. Reconstruct Itinerary (0) 2023.09.14 [릿코드/js] 151. reverse words in string (0) 2023.09.14