{"id":34166,"date":"2024-11-01T09:25:01","date_gmt":"2024-11-01T09:25:01","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34166"},"modified":"2024-11-01T10:58:21","modified_gmt":"2024-11-01T10:58:21","slug":"c-coding-test-course-building-bridges-2","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34166\/","title":{"rendered":"C++ Coding Test Course, Building Bridges"},"content":{"rendered":"<p><body><\/p>\n<h2>Problem Description<\/h2>\n<p>\n    Today&#8217;s problem is &#8216;Bridge Building&#8217;. This problem involves creating a bridge connecting two given islands, each with a specified depth represented by a natural number.<br \/>\n    To build the bridge, the depths of the two islands must be summed, and all bridges must have the same height. There are various methods to construct the bridge depending on the heights of the two islands,<br \/>\n    and the goal is to find the method that allows for the tallest bridge.\n<\/p>\n<h2>Problem Input<\/h2>\n<p>\n    The first line contains the number of islands <code>N<\/code> and the number of bridges <code>M<\/code>. (1 \u2264 <code>N<\/code>, <code>M<\/code> \u2264 10<sup>5<\/sup>)\n<\/p>\n<p>\n    The next line provides an array <code>heights<\/code> representing the depth of each island, where <code>heights[i]<\/code> indicates the depth of the i-th island.<br \/>\n    Each depth is a natural number from 1 to 1000.\n<\/p>\n<h2>Output<\/h2>\n<p>\n    Output the maximum height of the bridge needed to build the tallest bridge.\n<\/p>\n<h2>Problem Solving<\/h2>\n<p>\n    To solve this problem, we need to initially assess the depths of the two islands and optimize the height of the bridge accordingly.<br \/>\n    The tallest bridge can be described by the equation that it equals the total maximum depth of the two islands combined.<br \/>\n    That is, a bridge connecting the two islands can be constructed if its height is at least the average of the two island depths.\n<\/p>\n<h3>1. Problem Analysis<\/h3>\n<p>\n    To create a bridge from the given island depths, we will first intuitively calculate the average of each island&#8217;s depth.<br \/>\n    The following is an important analysis we can perform to determine the bridge height.\n<\/p>\n<h3>2. Algorithm Design<\/h3>\n<p>\n    1. Average the depths of the two islands to find the total height sum of the two islands.<br \/>\n    2. Combine the depths of all islands and attempt to build all possible bridges.<br \/>\n    3. Keep track of the maximum height that can be achieved for the bridges.<br \/>\n    4. This process can be optimized through binary search.\n<\/p>\n<h3>3. C++ Implementation<\/h3>\n<p>\n    Now, let&#8217;s implement the algorithm described above in C++. The code below calculates the maximum height possible to create a bridge from the <code>heights<\/code> array.\n<\/p>\n<pre><code>\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nint main() {\n    int N, M;\n    cin &gt;&gt; N &gt;&gt; M;\n    vector&lt;int&gt; heights(N);\n\n    for(int i = 0; i &lt; N; i++) {\n        cin &gt;&gt; heights[i];\n    }\n\n    int max_height = 0;\n    \n    \/\/ Logic to find the maximum height for building the bridges\n    for (int i = 0; i &lt; heights.size(); i++) {\n        for (int j = i + 1; j &lt; heights.size(); j++) {\n            int bridge_height = heights[i] + heights[j];\n            max_height = max(max_height, bridge_height);\n        }\n    }\n\n    cout &lt;&lt; max_height &lt;&lt; endl;\n\n    return 0;\n}\n<\/code><\/pre>\n<h3>4. Complexity Analysis<\/h3>\n<p>\n    The biggest issue with the code above is that it has a time complexity of O(N^2) due to the nested loops.<br \/>\n    As the input size increases, this can have a serious impact on performance, so a sorting algorithm can be utilized for optimization.\n<\/p>\n<h3>5. Optimized Implementation<\/h3>\n<p>\n    Now, to optimize for the tallest bridge between the two islands, we can sort the depths and use binary search techniques to find the challenging intervals.<br \/>\n    Below is the modified C++ code considering this.\n<\/p>\n<pre><code>\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nint main() {\n    int N, M;\n    cin &gt;&gt; N &gt;&gt; M;\n    vector&lt;int&gt; heights(N);\n\n    for(int i = 0; i &lt; N; i++) {\n        cin &gt;&gt; heights[i];\n    }\n\n    sort(heights.begin(), heights.end());\n    int max_height = 0;\n\n    for (int i = 0; i &lt; N; i++) {\n        for (int j = i + 1; j &lt; N; j++) {\n            max_height = max(max_height, heights[i] + heights[j]);\n        }\n    }\n\n    cout &lt;&lt; max_height &lt;&lt; endl;\n\n    return 0;\n}\n<\/code><\/pre>\n<h2>Conclusion<\/h2>\n<p>\n    Today, we covered the topic of &#8216;Bridge Building&#8217;. Through this problem, we learned how to process data and<br \/>\n    optimize algorithms.<br \/>\n    I hope to further develop these skills by practicing more algorithm problems in the future.\n<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem Description Today&#8217;s problem is &#8216;Bridge Building&#8217;. This problem involves creating a bridge connecting two given islands, each with a specified depth represented by a natural number. To build the bridge, the depths of the two islands must be summed, and all bridges must have the same height. There are various methods to construct the &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34166\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;C++ 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":[111],"tags":[],"class_list":["post-34166","post","type-post","status-publish","format-standard","hentry","category-c-coding-test-tutorials-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C++ 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\/34166\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C++ Coding Test Course, Building Bridges - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Problem Description Today&#8217;s problem is &#8216;Bridge Building&#8217;. This problem involves creating a bridge connecting two given islands, each with a specified depth represented by a natural number. To build the bridge, the depths of the two islands must be summed, and all bridges must have the same height. There are various methods to construct the &hellip; \ub354 \ubcf4\uae30 &quot;C++ Coding Test Course, Building Bridges&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34166\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:25:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T10:58:21+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\/34166\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34166\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"C++ Coding Test Course, Building Bridges\",\"datePublished\":\"2024-11-01T09:25:01+00:00\",\"dateModified\":\"2024-11-01T10:58:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34166\/\"},\"wordCount\":447,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"C++ Coding Test Tutorials\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34166\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34166\/\",\"name\":\"C++ Coding Test Course, Building Bridges - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:25:01+00:00\",\"dateModified\":\"2024-11-01T10:58:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34166\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34166\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34166\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C++ 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":"C++ 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\/34166\/","og_locale":"ko_KR","og_type":"article","og_title":"C++ Coding Test Course, Building Bridges - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Problem Description Today&#8217;s problem is &#8216;Bridge Building&#8217;. This problem involves creating a bridge connecting two given islands, each with a specified depth represented by a natural number. To build the bridge, the depths of the two islands must be summed, and all bridges must have the same height. There are various methods to construct the &hellip; \ub354 \ubcf4\uae30 \"C++ Coding Test Course, Building Bridges\"","og_url":"https:\/\/atmokpo.com\/w\/34166\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:25:01+00:00","article_modified_time":"2024-11-01T10:58:21+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\/34166\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34166\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"C++ Coding Test Course, Building Bridges","datePublished":"2024-11-01T09:25:01+00:00","dateModified":"2024-11-01T10:58:21+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34166\/"},"wordCount":447,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["C++ Coding Test Tutorials"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34166\/","url":"https:\/\/atmokpo.com\/w\/34166\/","name":"C++ Coding Test Course, Building Bridges - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:25:01+00:00","dateModified":"2024-11-01T10:58:21+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34166\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34166\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34166\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"C++ 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\/34166","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=34166"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34166\/revisions"}],"predecessor-version":[{"id":34167,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34166\/revisions\/34167"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}