{"id":33339,"date":"2024-11-01T09:15:41","date_gmt":"2024-11-01T09:15:41","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33339"},"modified":"2024-11-01T11:39:06","modified_gmt":"2024-11-01T11:39:06","slug":"java-coding-test-course-bridge-building","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33339\/","title":{"rendered":"Java Coding Test Course, Bridge Building"},"content":{"rendered":"<p><body><\/p>\n<h2>Problem Description<\/h2>\n<p>\n<strong>The Bridge Building Problem<\/strong> arises in the following context. You want to build N bridges and M piers. The goal of this problem is to calculate the number of possible combinations of bridge placements.<br \/>\n        The bridges must not overlap, and each pier serves to connect two bridges. To calculate the number of ways to place the bridges, knowledge of combinations and dynamic programming is required.\n    <\/p>\n<h2>Problem Definition<\/h2>\n<p><strong>Input<\/strong><\/p>\n<ul>\n<li>Size N (1 \u2264 N \u2264 30): Number of bridges<\/li>\n<li>Size M (1 \u2264 M \u2264 N): Number of piers<\/li>\n<\/ul>\n<p><strong>Output<\/strong><\/p>\n<ul>\n<li>Print the total number of ways to place the bridges as an integer.<\/li>\n<\/ul>\n<h2>Problem Approach<\/h2>\n<p>\n        The bridge building problem is essentially a combinatorial problem. We need to find the number of ways to select M bridges from N bridges. The number of combinations is calculated using the following formula:\n    <\/p>\n<pre><code>C(N, M) = N! \/ (M! * (N-M)!)<\/code><\/pre>\n<p>\n        However, directly calculating the factorial can be time-consuming, so we can use dynamic programming to calculate it efficiently. We will use two arrays.<br \/>\n        The first array will keep track of the number of piers chosen to place the bridges, and the second array will record the number of ways to place the bridges.\n    <\/p>\n<h2>Problem Solution<\/h2>\n<h3>Step 1: Initialize the Dynamic Programming Array<\/h3>\n<p>\n        First, we initialize the DP array. <code>dp[i][j]<\/code> represents the number of ways to place i bridges and j piers. After initializing the array to 0,<br \/>\n        we set <code>dp[0][0] = 1<\/code>. This means there is 1 way when there are no bridges and no piers.\n    <\/p>\n<h3>Step 2: Find the Recurrence Relation<\/h3>\n<p>\n        When adding one bridge, there is an option to place one pier. We can fill the dp array using the following recurrence relation.\n    <\/p>\n<pre><code>dp[i][j] = dp[i-1][j-1] + dp[i-1][j]<\/code><\/pre>\n<p>\n        Here, <code>dp[i-1][j-1]<\/code> refers to the case of placing i-1 bridges and j-1 piers, adding a new bridge, while<br \/>\n        <code>dp[i-1][j]<\/code> refers to the case of not adding a new bridge and using i-1 bridges to place j piers.\n    <\/p>\n<h3>Step 3: Print the Final Result<\/h3>\n<p>\n        After filling all the ranges, we can print <code>dp[N][M]<\/code> to get the final number of ways to place the bridges.\n    <\/p>\n<h2>Java Code Implementation<\/h2>\n<p>The Java code to solve the bridge building problem is as follows:<\/p>\n<pre><code>\npublic class BridgeBuilding {\n    public static void main(String[] args) {\n        int N = 5;  \/\/ Number of bridges\n        int M = 3;  \/\/ Number of piers\n        \n        System.out.println(countWays(N, M));\n    }\n    \n    public static int countWays(int n, int m) {\n        int[][] dp = new int[n + 1][m + 1];\n\n        for (int i = 0; i <= n; i++) {\n            for (int j = 0; j <= Math.min(i, m); j++) {\n                if (j == 0) {\n                    dp[i][j] = 1; \/\/ The case of placing no piers\n                } else if (i > 0) {\n                    dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];\n                }\n            }\n        }\n        \n        return dp[n][m];\n    }\n}\n<\/code><\/pre>\n<h2>Time Complexity<\/h2>\n<p>\n        The time complexity of this algorithm is O(N*M). This time arises from filling the DP table using two nested loops. The space complexity is O(N*M), as we need space to store the DP array.\n    <\/p>\n<h2>Conclusion<\/h2>\n<p>\n        In this lecture, we covered the &#8216;Bridge Building&#8217; problem. To solve this problem, an understanding of combinatorial theory and dynamic programming is essential.<br \/>\n        The provided Java code allows us to solve the problem, and similar approaches can be used when encountering similar types of problems.<br \/>\n        In the next lecture, we will discuss another algorithm problem.\n    <\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem Description The Bridge Building Problem arises in the following context. You want to build N bridges and M piers. The goal of this problem is to calculate the number of possible combinations of bridge placements. The bridges must not overlap, and each pier serves to connect two bridges. To calculate the number of ways &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33339\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Java Coding Test Course, Bridge Building&#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":[139],"tags":[],"class_list":["post-33339","post","type-post","status-publish","format-standard","hentry","category-java-coding-test"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java Coding Test Course, Bridge Building - \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\/33339\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java Coding Test Course, Bridge Building - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Problem Description The Bridge Building Problem arises in the following context. You want to build N bridges and M piers. The goal of this problem is to calculate the number of possible combinations of bridge placements. The bridges must not overlap, and each pier serves to connect two bridges. To calculate the number of ways &hellip; \ub354 \ubcf4\uae30 &quot;Java Coding Test Course, Bridge Building&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33339\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:15:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:39:06+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=\"2\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/33339\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33339\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Java Coding Test Course, Bridge Building\",\"datePublished\":\"2024-11-01T09:15:41+00:00\",\"dateModified\":\"2024-11-01T11:39:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33339\/\"},\"wordCount\":436,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Java Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33339\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33339\/\",\"name\":\"Java Coding Test Course, Bridge Building - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:15:41+00:00\",\"dateModified\":\"2024-11-01T11:39:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33339\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33339\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33339\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java Coding Test Course, Bridge Building\"}]},{\"@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":"Java Coding Test Course, Bridge Building - \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\/33339\/","og_locale":"ko_KR","og_type":"article","og_title":"Java Coding Test Course, Bridge Building - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Problem Description The Bridge Building Problem arises in the following context. You want to build N bridges and M piers. The goal of this problem is to calculate the number of possible combinations of bridge placements. The bridges must not overlap, and each pier serves to connect two bridges. To calculate the number of ways &hellip; \ub354 \ubcf4\uae30 \"Java Coding Test Course, Bridge Building\"","og_url":"https:\/\/atmokpo.com\/w\/33339\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:15:41+00:00","article_modified_time":"2024-11-01T11:39:06+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":"2\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/33339\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33339\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Java Coding Test Course, Bridge Building","datePublished":"2024-11-01T09:15:41+00:00","dateModified":"2024-11-01T11:39:06+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33339\/"},"wordCount":436,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Java Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33339\/","url":"https:\/\/atmokpo.com\/w\/33339\/","name":"Java Coding Test Course, Bridge Building - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:15:41+00:00","dateModified":"2024-11-01T11:39:06+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33339\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33339\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33339\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Java Coding Test Course, Bridge Building"}]},{"@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\/33339","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=33339"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33339\/revisions"}],"predecessor-version":[{"id":33340,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33339\/revisions\/33340"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}