{"id":34430,"date":"2024-11-01T09:28:03","date_gmt":"2024-11-01T09:28:03","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34430"},"modified":"2024-11-01T11:41:17","modified_gmt":"2024-11-01T11:41:17","slug":"javascript-coding-test-course-finding-minimum-spanning-tree","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34430\/","title":{"rendered":"JavaScript Coding Test Course, Finding Minimum Spanning Tree"},"content":{"rendered":"<p><body><\/p>\n<p>Today, we will learn about a method to find the &#8220;Minimum Spanning Tree (MST)&#8221; which is a common problem in algorithm tests. In particular, we will explain how to solve this problem step by step using JavaScript. Through this tutorial, you will understand all the concepts and develop the ability to confidently solve this problem in actual coding tests.<\/p>\n<h2>1. What is a Minimum Spanning Tree?<\/h2>\n<p>A Minimum Spanning Tree is a subgraph that includes all vertices of a connected graph and has the minimum sum of edge weights. In other words, it refers to a tree that connects all vertices with the least cost. MST is used in various fields such as network design, transportation systems, and clustering.<\/p>\n<h2>2. Problem Description<\/h2>\n<p>When given the vertices and edges information of a graph, please write a function that finds the Minimum Spanning Tree and returns its total weight.<\/p>\n<h3>Input Format<\/h3>\n<ul>\n<li>The number of vertices n (1 \u2264 n \u2264 1000)<\/li>\n<li>The number of edges m (1 \u2264 m \u2264 10000)<\/li>\n<li>Each edge is given in the form of (a, b, c), where a and b are the vertices and c is the weight of the edge.<\/li>\n<\/ul>\n<h3>Output Format<\/h3>\n<p>Print the total weight of the Minimum Spanning Tree.<\/p>\n<h3>Example<\/h3>\n<pre>\n    Input:\n    4 5\n    1 2 1\n    1 3 4\n    2 3 2\n    1 4 3\n    3 4 5\n\n    Output:\n    6\n    <\/pre>\n<h2>3. Algorithm Selection<\/h2>\n<p>There are several methods to find the Minimum Spanning Tree. Among these, <strong>Kruskal&#8217;s Algorithm<\/strong> and <strong>Prim&#8217;s Algorithm<\/strong> are widely used. We will use Kruskal&#8217;s Algorithm here.<\/p>\n<h3>Kruskal&#8217;s Algorithm<\/h3>\n<p>Kruskal&#8217;s Algorithm sorts the edges based on their weights and selects the edge with the lowest weight first, ensuring that no cycles are formed so that it can create the Minimum Spanning Tree. This method first sorts the given list of edges and then adds the lightest edges one by one.<\/p>\n<h2>4. Algorithm Implementation<\/h2>\n<p>Now, let&#8217;s write the JavaScript code to solve the problem using Kruskal&#8217;s Algorithm. The overall steps are as follows:<\/p>\n<ol>\n<li>After receiving edge information, sort them based on weights.<\/li>\n<li>Use the Union-Find data structure to include edges without forming cycles.<\/li>\n<li>After processing all edges, calculate and return the total weight of the Minimum Spanning Tree.<\/li>\n<\/ol>\n<h3>Code Implementation<\/h3>\n<pre>\n    <code>\n    function find(parent, i) {\n        if (parent[i] === -1) {\n            return i;\n        }\n        return find(parent, parent[i]);\n    }\n\n    function union(parent, x, y) {\n        const xset = find(parent, x);\n        const yset = find(parent, y);\n        parent[xset] = yset;\n    }\n\n    function kruskal(n, edges) {\n        edges.sort((a, b) => a[2] - b[2]); \/\/ Sort by edge weight\n        let parent = Array(n + 1).fill(-1);\n        let minWeight = 0;\n        const mst = [];\n\n        for (let i = 0; i < edges.length; i++) {\n            const [u, v, weight] = edges[i];\n\n            if (find(parent, u) !== find(parent, v)) {\n                union(parent, u, v);\n                minWeight += weight;\n                mst.push([u, v, weight]);\n            }\n        }\n\n        return { minWeight, mst };\n    }\n\n    \/\/ Example input data\n    const n = 4;\n    const edges = [\n        [1, 2, 1],\n        [1, 3, 4],\n        [2, 3, 2],\n        [1, 4, 3],\n        [3, 4, 5]\n    ];\n\n    const result = kruskal(n, edges);\n    console.log(\"Total weight of the Minimum Spanning Tree:\", result.minWeight);\n    <\/code>\n    <\/pre>\n<h2>5. Code Explanation<\/h2>\n<p>The above code is a function that uses Kruskal's Algorithm to find the Minimum Spanning Tree of the given graph. It is divided into the following key parts:<\/p>\n<h3>5.1. Union-Find Function<\/h3>\n<p>The Union-Find data structure is used to track the connected components of the graph. Each node has its own parent. The <code>find<\/code> function finds the representative of the set that the node belongs to, and the <code>union<\/code> function merges two sets.<\/p>\n<h3>5.2. Edge Sorting<\/h3>\n<p>Sort the list of edges by weight to select the minimum weight edge first. The <code>sort<\/code> method in JavaScript can be used to sort easily.<\/p>\n<h3>5.3. Minimum Spanning Tree Construction<\/h3>\n<p>For each edge, check the parents of the two nodes and select the edge only if it does not create a cycle. The selected edges are stored in the <code>mst<\/code> array, and the sum of the weights is incremented in the <code>minWeight<\/code> variable.<\/p>\n<h2>6. Performance Analysis<\/h2>\n<p>The time complexity of Kruskal's Algorithm is O(E log E). Here, E is the number of edges. Under the constraints of the given problem, this algorithm is efficient. You can expect additional performance improvements with the path compression technique of Union-Find.<\/p>\n<h2>7. Conclusion<\/h2>\n<p>In this tutorial, we learned about Kruskal's Algorithm to find the Minimum Spanning Tree using JavaScript and explained in detail how to solve the problem. Graph problems are frequently posed in algorithm competitions and various coding tests, so mastering this content will be very helpful. Next, we will solve various problems using other algorithms or data structures.<\/p>\n<h2>8. Practice Problem<\/h2>\n<p>Try to solve the following problem. After solving it, review your code to check for any parts that can be optimized.<\/p>\n<blockquote><p>Write an algorithm to extract the edges of the Minimum Spanning Tree from the given graph and output this list of edge weights.<\/p><\/blockquote>\n<h2>9. References<\/h2>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Minimum_spanning_tree\">Minimum Spanning Tree - Wikipedia<\/a><\/li>\n<li><a href=\"https:\/\/www.geeksforgeeks.org\/minimum-spanning-tree-greedy-2\/\">GeeksforGeeks: Minimum Spanning Tree<\/a><\/li>\n<li><a href=\"https:\/\/visualgo.net\/en\/mst\">Visualgo: Minimum Spanning Tree<\/a><\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, we will learn about a method to find the &#8220;Minimum Spanning Tree (MST)&#8221; which is a common problem in algorithm tests. In particular, we will explain how to solve this problem step by step using JavaScript. Through this tutorial, you will understand all the concepts and develop the ability to confidently solve this problem &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34430\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;JavaScript Coding Test Course, Finding Minimum Spanning Tree&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[141],"tags":[],"class_list":["post-34430","post","type-post","status-publish","format-standard","hentry","category-javascript-coding-test"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JavaScript Coding Test Course, Finding Minimum Spanning Tree - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/34430\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript Coding Test Course, Finding Minimum Spanning Tree - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Today, we will learn about a method to find the &#8220;Minimum Spanning Tree (MST)&#8221; which is a common problem in algorithm tests. In particular, we will explain how to solve this problem step by step using JavaScript. Through this tutorial, you will understand all the concepts and develop the ability to confidently solve this problem &hellip; \ub354 \ubcf4\uae30 &quot;JavaScript Coding Test Course, Finding Minimum Spanning Tree&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34430\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:28:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:41:17+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/34430\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34430\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"JavaScript Coding Test Course, Finding Minimum Spanning Tree\",\"datePublished\":\"2024-11-01T09:28:03+00:00\",\"dateModified\":\"2024-11-01T11:41:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34430\/\"},\"wordCount\":658,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Javascript Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34430\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34430\/\",\"name\":\"JavaScript Coding Test Course, Finding Minimum Spanning Tree - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:28:03+00:00\",\"dateModified\":\"2024-11-01T11:41:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34430\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34430\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34430\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript Coding Test Course, Finding Minimum Spanning Tree\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JavaScript Coding Test Course, Finding Minimum Spanning Tree - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/34430\/","og_locale":"ko_KR","og_type":"article","og_title":"JavaScript Coding Test Course, Finding Minimum Spanning Tree - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Today, we will learn about a method to find the &#8220;Minimum Spanning Tree (MST)&#8221; which is a common problem in algorithm tests. In particular, we will explain how to solve this problem step by step using JavaScript. Through this tutorial, you will understand all the concepts and develop the ability to confidently solve this problem &hellip; \ub354 \ubcf4\uae30 \"JavaScript Coding Test Course, Finding Minimum Spanning Tree\"","og_url":"https:\/\/atmokpo.com\/w\/34430\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:28:03+00:00","article_modified_time":"2024-11-01T11:41:17+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/34430\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34430\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"JavaScript Coding Test Course, Finding Minimum Spanning Tree","datePublished":"2024-11-01T09:28:03+00:00","dateModified":"2024-11-01T11:41:17+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34430\/"},"wordCount":658,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Javascript Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34430\/","url":"https:\/\/atmokpo.com\/w\/34430\/","name":"JavaScript Coding Test Course, Finding Minimum Spanning Tree - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:28:03+00:00","dateModified":"2024-11-01T11:41:17+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34430\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34430\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34430\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"JavaScript Coding Test Course, Finding Minimum Spanning Tree"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34430","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=34430"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34430\/revisions"}],"predecessor-version":[{"id":34431,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34430\/revisions\/34431"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}