{"id":33544,"date":"2024-11-01T09:17:40","date_gmt":"2024-11-01T09:17:40","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33544"},"modified":"2024-11-01T11:38:02","modified_gmt":"2024-11-01T11:38:02","slug":"java-coding-test-course-floyd-warshall","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33544\/","title":{"rendered":"Java Coding Test Course, Floyd-Warshall"},"content":{"rendered":"<p><body><\/p>\n<p>Hello! In this lecture, we will learn about the <strong>Floyd-Warshall Algorithm<\/strong>, which is frequently featured in Java coding tests. The Floyd-Warshall Algorithm is an efficient method for finding the shortest paths from every point to every other point. It is particularly useful when the number of vertices in a graph is small. In this post, we will solve a problem applying the Floyd-Warshall Algorithm and explain the process in detail.<\/p>\n<h2>Problem Description<\/h2>\n<p>Here is a problem that utilizes the Floyd-Warshall Algorithm.<\/p>\n<pre>\n<strong>Problem:<\/strong> Given N cities and road information between the cities, find the shortest paths between all cities. \nEach city is numbered from 1 to N, and roads are connected bidirectionally. \nRoad information is provided in the following format: \n\nN  M\nx y z \n\nWhere N is the number of cities, M is the number of roads, x is one city of the road, y is the other city of the road, and z is the distance between the two cities. \nThe distance to oneself (e.g., from city 1 to city 1) is always set to 0. \nIf there are multiple direct roads between two cities, only the road information with the smallest distance is considered.\n\n<strong>Input Example:<\/strong>\n4 7\n1 2 4\n1 3 2\n2 3 5\n2 4 10\n3 4 3\n1 4 8\n3 1 3\n\n<strong>Output Example:<\/strong>\n0 2 3 5\n2 0 5 3\n3 5 0 3\n5 3 3 0\n<\/pre>\n<h2>Problem Solving Process<\/h2>\n<p>Now, let&#8217;s implement the Floyd-Warshall Algorithm to solve this problem. The following explains the algorithm step by step.<\/p>\n<h3>1. Set Up Data Structure<\/h3>\n<p>First, we set up a 2D array to store the distance information between all cities. Since there are N cities, the size of the array will be <code>dist[N + 1][N + 1]<\/code>. All elements of the array are initialized to infinity (<code>Integer.MAX_VALUE<\/code>). However, the distance from each city to itself is set to 0.<\/p>\n<pre><code>int[][] dist = new int[N + 1][N + 1];\n\nfor (int i = 1; i &lt;= N; i++) {\n    Arrays.fill(dist[i], Integer.MAX_VALUE);\n    dist[i][i] = 0;\n}<\/code><\/pre>\n<h3>2. Initialize Distance Array with Road Information<\/h3>\n<p>We set the distance information between cities based on the input road information. If multiple roads are provided between two cities, only the shortest distance is saved in the distance array.<\/p>\n<pre><code>for (int i = 0; i &lt; M; i++) {\n    int x = sc.nextInt();\n    int y = sc.nextInt();\n    int z = sc.nextInt();\n    dist[x][y] = Math.min(dist[x][y], z);\n    dist[y][x] = Math.min(dist[y][x], z);\n}<\/code><\/pre>\n<h3>3. Implement the Floyd-Warshall Algorithm<\/h3>\n<p>The core of the Floyd-Warshall Algorithm is to repeatedly update the shortest distances for all pairs using a triple loop. Below is the implementation code of the Floyd-Warshall Algorithm.<\/p>\n<pre><code>for (int k = 1; k &lt;= N; k++) {\n    for (int i = 1; i &lt;= N; i++) {\n        for (int j = 1; j &lt;= N; j++) {\n            if (dist[i][j] &gt; dist[i][k] + dist[k][j]) {\n                dist[i][j] = dist[i][k] + dist[k][j];\n            }\n        }\n    }\n}<\/code><\/pre>\n<h3>4. Output the Result<\/h3>\n<p>Finally, we output the shortest paths between all cities. The distances from city 1 to city N are printed in order.<\/p>\n<pre><code>for (int i = 1; i &lt;= N; i++) {\n    for (int j = 1; j &lt;= N; j++) {\n        if (dist[i][j] == Integer.MAX_VALUE) {\n            System.out.print(\"INF \");\n        } else {\n            System.out.print(dist[i][j] + \" \");\n        }\n    }\n    System.out.println();\n}<\/code><\/pre>\n<h2>Complete Code<\/h2>\n<p>Now, let&#8217;s integrate all the above steps into a single Java program. Below is the complete Java code to solve the problem.<\/p>\n<pre><code>import java.util.Arrays;\nimport java.util.Scanner;\n\npublic class FloydWarshall {\n    public static void main(String[] args) {\n        Scanner sc = new Scanner(System.in);\n        int N = sc.nextInt(); \/\/ Number of cities\n        int M = sc.nextInt(); \/\/ Number of roads\n\n        int[][] dist = new int[N + 1][N + 1];\n\n        \/\/ Initialization\n        for (int i = 1; i &lt;= N; i++) {\n            Arrays.fill(dist[i], Integer.MAX_VALUE);\n            dist[i][i] = 0; \/\/ Distance to itself is 0\n        }\n\n        \/\/ Input road information\n        for (int i = 0; i &lt; M; i++) {\n            int x = sc.nextInt();\n            int y = sc.nextInt();\n            int z = sc.nextInt();\n            dist[x][y] = Math.min(dist[x][y], z);\n            dist[y][x] = Math.min(dist[y][x], z);\n        }\n\n        \/\/ Floyd-Warshall Algorithm\n        for (int k = 1; k &lt;= N; k++) {\n            for (int i = 1; i &lt;= N; i++) {\n                for (int j = 1; j &lt;= N; j++) {\n                    if (dist[i][j] &gt; dist[i][k] + dist[k][j]) {\n                        dist[i][j] = dist[i][k] + dist[k][j];\n                    }\n                }\n            }\n        }\n\n        \/\/ Output results\n        for (int i = 1; i &lt;= N; i++) {\n            for (int j = 1; j &lt;= N; j++) {\n                if (dist[i][j] == Integer.MAX_VALUE) {\n                    System.out.print(\"INF \");\n                } else {\n                    System.out.print(dist[i][j] + \" \");\n                }\n            }\n            System.out.println();\n        }\n    }\n}<\/code><\/pre>\n<h2>Summary<\/h2>\n<p>In this lecture, we solved the problem of finding the shortest paths between cities using the Floyd-Warshall Algorithm. This algorithm can be effectively used to find the shortest paths for all pairs, and it has helped deepen the understanding of the structure and logic of the code. During actual coding tests, it is important to develop efficient problem-solving skills by utilizing such algorithms.<\/p>\n<div class=\"note\">\n<strong>Note:<\/strong> The time complexity of the Floyd-Warshall Algorithm is <code>O(N^3)<\/code>, so for a large number of vertices in a graph, it may be better to consider other shortest path algorithms (e.g., Dijkstra&#8217;s Algorithm).\n<\/div>\n<p>We will continue to introduce various algorithms in the Allelujah coding test course. Thank you!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello! In this lecture, we will learn about the Floyd-Warshall Algorithm, which is frequently featured in Java coding tests. The Floyd-Warshall Algorithm is an efficient method for finding the shortest paths from every point to every other point. It is particularly useful when the number of vertices in a graph is small. In this post, &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33544\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Java Coding Test Course, Floyd-Warshall&#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-33544","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, Floyd-Warshall - \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\/33544\/\" \/>\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, Floyd-Warshall - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Hello! In this lecture, we will learn about the Floyd-Warshall Algorithm, which is frequently featured in Java coding tests. The Floyd-Warshall Algorithm is an efficient method for finding the shortest paths from every point to every other point. It is particularly useful when the number of vertices in a graph is small. In this post, &hellip; \ub354 \ubcf4\uae30 &quot;Java Coding Test Course, Floyd-Warshall&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33544\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:17:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:38:02+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\/33544\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33544\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Java Coding Test Course, Floyd-Warshall\",\"datePublished\":\"2024-11-01T09:17:40+00:00\",\"dateModified\":\"2024-11-01T11:38:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33544\/\"},\"wordCount\":390,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Java Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33544\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33544\/\",\"name\":\"Java Coding Test Course, Floyd-Warshall - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:17:40+00:00\",\"dateModified\":\"2024-11-01T11:38:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33544\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33544\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33544\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java Coding Test Course, Floyd-Warshall\"}]},{\"@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, Floyd-Warshall - \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\/33544\/","og_locale":"ko_KR","og_type":"article","og_title":"Java Coding Test Course, Floyd-Warshall - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Hello! In this lecture, we will learn about the Floyd-Warshall Algorithm, which is frequently featured in Java coding tests. The Floyd-Warshall Algorithm is an efficient method for finding the shortest paths from every point to every other point. It is particularly useful when the number of vertices in a graph is small. In this post, &hellip; \ub354 \ubcf4\uae30 \"Java Coding Test Course, Floyd-Warshall\"","og_url":"https:\/\/atmokpo.com\/w\/33544\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:17:40+00:00","article_modified_time":"2024-11-01T11:38:02+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\/33544\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33544\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Java Coding Test Course, Floyd-Warshall","datePublished":"2024-11-01T09:17:40+00:00","dateModified":"2024-11-01T11:38:02+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33544\/"},"wordCount":390,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Java Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33544\/","url":"https:\/\/atmokpo.com\/w\/33544\/","name":"Java Coding Test Course, Floyd-Warshall - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:17:40+00:00","dateModified":"2024-11-01T11:38:02+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33544\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33544\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33544\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Java Coding Test Course, Floyd-Warshall"}]},{"@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\/33544","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=33544"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33544\/revisions"}],"predecessor-version":[{"id":33545,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33544\/revisions\/33545"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}