{"id":33618,"date":"2024-11-01T09:18:34","date_gmt":"2024-11-01T09:18:34","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33618"},"modified":"2024-11-01T12:27:57","modified_gmt":"2024-11-01T12:27:57","slug":"%ed%8c%8c%ec%9d%b4%ec%8d%ac-%ec%bd%94%eb%94%a9%ed%85%8c%ec%8a%a4%ed%8a%b8-%ea%b0%95%ec%a2%8c-%eb%8b%a4%eb%a6%ac-%eb%a7%8c%eb%93%a4%ea%b8%b0-2","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33618\/","title":{"rendered":"Python coding test course, building bridges"},"content":{"rendered":"<p><body><\/p>\n<article>\n<header>\n<p>Hello everyone! In this post, we will explore how to solve algorithm problems frequently encountered in coding tests using Python. The topic is &#8216;Building Bridges&#8217;. The &#8216;Building Bridges&#8217; problem is a classic problem that actually has various variations, including important concepts related to graph theory.<\/p>\n<\/header>\n<section>\n<h2>Problem Description<\/h2>\n<p>There are several given islands. Each island is located in different positions, and we want to build bridges between the islands. At this time, bridges can only be constructed vertically or horizontally, and the bridges must stretch out in a straight line. Additionally, we need to minimize the total length of the bridges so that as many islands as possible can be connected.<\/p>\n<p>Write a function that outputs the minimum total length of the bridges when the coordinates of the given islands are provided as (x, y).<\/p>\n<pre><code>def minimum_bridge_length(islands: List[Tuple[int, int]]) -> int:\n    pass\n<\/code><\/pre>\n<h3>Input<\/h3>\n<p>The number of islands N (2 \u2264 N \u2264 10,000) and a list of coordinates (x, y) for each island will be provided.<\/p>\n<h3>Output<\/h3>\n<p>Return the minimum total length of the bridges as an integer.<\/p>\n<\/section>\n<section>\n<h2>Problem Solving Process<\/h2>\n<h3>1. Understanding the Problem<\/h3>\n<p>The goal of the problem is to find the minimum total length of bridges connecting the given islands. The key to this problem is understanding how the bridge length between each pair of islands is calculated. If there are coordinates (x1, y1) and (x2, y2) for two islands, the bridge length between them can be calculated as |x1 &#8211; x2| + |y1 &#8211; y2|. In other words, it is the sum of the differences in the x-coordinates and y-coordinates of the islands.<\/p>\n<h3>2. Algorithm Design<\/h3>\n<p>We can solve the problem by considering all combinations of the islands to build bridges. However, since N can be as large as 10,000, considering all combinations would lead to an O(N^2) time complexity, which is inefficient. Instead, we can use a Minimum Spanning Tree (MST) algorithm to connect the bridges minimally.<\/p>\n<p>To construct the MST, we can use either Kruskal&#8217;s or Prim&#8217;s algorithm. Here, we will use Prim&#8217;s algorithm. This algorithm starts from one vertex of the graph and builds the MST by adding the shortest edge one at a time.<\/p>\n<h3>3. Implementing Prim&#8217;s Algorithm<\/h3>\n<p>First, we prepare a list to store the coordinates of each island and a priority queue to store the connection costs. Then, starting from one island, we calculate the lengths of the bridges to all connected islands and repeat the process of adding the island with the shortest length.<\/p>\n<pre><code>\nimport heapq\nfrom typing import List, Tuple\n\ndef minimum_bridge_length(islands: List[Tuple[int, int]]) -> int:\n    n = len(islands)\n    visited = [False] * n\n    min_heap = []\n    \n    # Start from the first island\n    for i in range(1, n):\n        dist = abs(islands[0][0] - islands[i][0]) + abs(islands[0][1] - islands[i][1])\n        heapq.heappush(min_heap, (dist, i))\n    \n    visited[0] = True\n    total_length = 0\n    edges_used = 0\n    \n    while min_heap and edges_used < n - 1:\n        dist, island_index = heapq.heappop(min_heap)\n        \n        if visited[island_index]:\n            continue\n        \n        visited[island_index] = True\n        total_length += dist\n        edges_used += 1\n        \n        for i in range(n):\n            if not visited[i]:\n                new_dist = abs(islands[island_index][0] - islands[i][0]) + abs(islands[island_index][1] - islands[i][1])\n                heapq.heappush(min_heap, (new_dist, i))\n    \n    return total_length\n<\/code><\/pre>\n<h3>4. Complexity Analysis<\/h3>\n<p>The time complexity of this algorithm is O(E log V), where E is the number of edges and V is the number of vertices. However, since we do not consider all combinations and generate bridges based on each island, the actual performance is better.<\/p>\n<h3>5. Example<\/h3>\n<p>Now, let's solve an example using this algorithm.<\/p>\n<pre><code>\nislands = [(0, 0), (1, 1), (3, 1), (4, 0)]\nprint(minimum_bridge_length(islands))  # Output: 4\n<\/code><\/pre>\n<p>In the above example, we can connect the bridge from (0, 0) to (1, 1), from (1, 1) to (3, 1), and from (3, 1) to (4, 0). The total length of the bridges becomes 4.<\/p>\n<\/section>\n<footer>\n<h2>Conclusion<\/h2>\n<p>In this tutorial, we examined the 'Building Bridges' problem using Python. There are various ways to solve algorithmic problems, and these are very useful skills for preparing for coding tests. I hope you continue to practice based on a deep understanding of the data structures and algorithms used in solving problems. If you need more problems, I will continue to provide updates.<\/p>\n<p>Thank you!<\/p>\n<\/footer>\n<\/article>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello everyone! In this post, we will explore how to solve algorithm problems frequently encountered in coding tests using Python. The topic is &#8216;Building Bridges&#8217;. The &#8216;Building Bridges&#8217; problem is a classic problem that actually has various variations, including important concepts related to graph theory. Problem Description There are several given islands. Each island is &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33618\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Python coding test course, building bridges&#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":[145],"tags":[],"class_list":["post-33618","post","type-post","status-publish","format-standard","hentry","category-python-coding-test"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python coding test course, building bridges - \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\/33618\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python coding test course, building bridges - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Hello everyone! In this post, we will explore how to solve algorithm problems frequently encountered in coding tests using Python. The topic is &#8216;Building Bridges&#8217;. The &#8216;Building Bridges&#8217; problem is a classic problem that actually has various variations, including important concepts related to graph theory. Problem Description There are several given islands. Each island is &hellip; \ub354 \ubcf4\uae30 &quot;Python coding test course, building bridges&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33618\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:18:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T12:27:57+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=\"3\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/33618\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33618\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Python coding test course, building bridges\",\"datePublished\":\"2024-11-01T09:18:34+00:00\",\"dateModified\":\"2024-11-01T12:27:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33618\/\"},\"wordCount\":554,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Python Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33618\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33618\/\",\"name\":\"Python coding test course, building bridges - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:18:34+00:00\",\"dateModified\":\"2024-11-01T12:27:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33618\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33618\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33618\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python coding test course, building bridges\"}]},{\"@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":"Python coding test course, building bridges - \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\/33618\/","og_locale":"ko_KR","og_type":"article","og_title":"Python coding test course, building bridges - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Hello everyone! In this post, we will explore how to solve algorithm problems frequently encountered in coding tests using Python. The topic is &#8216;Building Bridges&#8217;. The &#8216;Building Bridges&#8217; problem is a classic problem that actually has various variations, including important concepts related to graph theory. Problem Description There are several given islands. Each island is &hellip; \ub354 \ubcf4\uae30 \"Python coding test course, building bridges\"","og_url":"https:\/\/atmokpo.com\/w\/33618\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:18:34+00:00","article_modified_time":"2024-11-01T12:27:57+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":"3\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/33618\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33618\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Python coding test course, building bridges","datePublished":"2024-11-01T09:18:34+00:00","dateModified":"2024-11-01T12:27:57+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33618\/"},"wordCount":554,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Python Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33618\/","url":"https:\/\/atmokpo.com\/w\/33618\/","name":"Python coding test course, building bridges - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:18:34+00:00","dateModified":"2024-11-01T12:27:57+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33618\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33618\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33618\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Python coding test course, building bridges"}]},{"@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\/33618","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=33618"}],"version-history":[{"count":2,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33618\/revisions"}],"predecessor-version":[{"id":38052,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33618\/revisions\/38052"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33618"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33618"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}