{"id":34710,"date":"2024-11-01T09:31:07","date_gmt":"2024-11-01T09:31:07","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34710"},"modified":"2024-11-01T11:26:53","modified_gmt":"2024-11-01T11:26:53","slug":"swift-coding-test-course-dijkstra","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34710\/","title":{"rendered":"Swift Coding Test Course, Dijkstra"},"content":{"rendered":"<p><body><\/p>\n<p>Today, we will solve the problem of finding the shortest path using Dijkstra&#8217;s algorithm in Swift. The Dijkstra algorithm is one of the most important algorithms in graph theory and is used to find the shortest path from a specific node to all other nodes.<\/p>\n<h2>Introduction to the Algorithm<\/h2>\n<p>Dijkstra&#8217;s Algorithm is a graph search algorithm developed by computer scientist Edgar Dijkstra in 1956. This algorithm is effective for finding the shortest path in graphs without negative weights.<\/p>\n<h3>How It Works<\/h3>\n<p>The algorithm proceeds in the following steps:<\/p>\n<ol>\n<li>Select the starting node and set the distance of this node to 0.<\/li>\n<li>Update the distances to neighboring nodes.<\/li>\n<li>After calculating the distances to all nodes, select the closest node and move to the next node.<\/li>\n<li>Repeat this process until you find the shortest distance to all nodes.<\/li>\n<\/ol>\n<h2>Example Problem<\/h2>\n<p>Here is a problem that can be solved using Dijkstra&#8217;s algorithm:<\/p>\n<h3>Problem: Find the Shortest Path<\/h3>\n<p>Given a graph, find the shortest path from a specific starting node to other nodes. Below is the weighted adjacency list of the graph:<\/p>\n<pre>\n0: {1: 4, 2: 1}\n1: {2: 2, 3: 5}\n2: {1: 1, 3: 8}\n3: {}\n<\/pre>\n<p>For the above graph, write a program to find the shortest path from node 0 to node 3. The result should be able to find the shortest path as 0 -> 2 -> 1 -> 3.<\/p>\n<h2>Swift Implementation<\/h2>\n<p>Now, let&#8217;s implement Dijkstra&#8217;s algorithm in Swift to solve the above problem.<\/p>\n<pre><code>\nimport Foundation\n\n\/\/ Class to represent the graph\nclass Graph {\n    var vertices: Int\n    var adjList: [[(node: Int, weight: Int)]]\n    \n    init(vertices: Int) {\n        self.vertices = vertices\n        self.adjList = Array(repeating: [], count: vertices)\n    }\n\n    func addEdge(source: Int, destination: Int, weight: Int) {\n        adjList[source].append((node: destination, weight: weight))\n    }\n\n    func dijkstra(source: Int) -> [Int] {\n        var distances = Array(repeating: Int.max, count: vertices)\n        var visited = Array(repeating: false, count: vertices)\n        distances[source] = 0\n\n        for _ in 0..<vertices {\n            let u = minDistance(distances: distances, visited: visited)\n            visited[u] = true\n\n            for (neighbor, weight) in adjList[u] {\n                if !visited[neighbor] &#038;&#038; distances[u] != Int.max &#038;&#038; distances[u] + weight < distances[neighbor] {\n                    distances[neighbor] = distances[u] + weight\n                }\n            }\n        }\n\n        return distances\n    }\n\n    private func minDistance(distances: [Int], visited: [Bool]) -> Int {\n        var min = Int.max\n        var minIndex = -1\n        \n        for v in 0..<distances.count where !visited[v] {\n            if distances[v] < min {\n                min = distances[v]\n                minIndex = v\n            }\n        }\n        \n        return minIndex\n    }\n}\n\nlet graph = Graph(vertices: 4)\ngraph.addEdge(source: 0, destination: 1, weight: 4)\ngraph.addEdge(source: 0, destination: 2, weight: 1)\ngraph.addEdge(source: 1, destination: 2, weight: 2)\ngraph.addEdge(source: 1, destination: 3, weight: 5)\ngraph.addEdge(source: 2, destination: 3, weight: 8)\n\nlet distances = graph.dijkstra(source: 0)\nprint(\"Shortest distances from node 0: \\(distances)\")\n<\/code><\/pre>\n<p>In the above code, the graph class uses an adjacency list to store relationships between nodes and calculates the shortest path using Dijkstra's algorithm. It outputs the shortest path from node 0 to node 3 for the given example.<\/p>\n<h2>Conclusion<\/h2>\n<p>Dijkstra's algorithm is a very useful tool for solving the shortest path problem. By implementing it in Swift, you can understand how the algorithm works and enhance your important coding skills through practical programming exercises. I encourage you to use Dijkstra's algorithm to solve various graph problems.<\/p>\n<p>If you want to learn more about algorithms and solutions, please continue to follow my blog!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, we will solve the problem of finding the shortest path using Dijkstra&#8217;s algorithm in Swift. The Dijkstra algorithm is one of the most important algorithms in graph theory and is used to find the shortest path from a specific node to all other nodes. Introduction to the Algorithm Dijkstra&#8217;s Algorithm is a graph search &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34710\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Swift Coding Test Course, Dijkstra&#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":[129],"tags":[],"class_list":["post-34710","post","type-post","status-publish","format-standard","hentry","category-swift-coding-test"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Swift Coding Test Course, Dijkstra - \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\/34710\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Swift Coding Test Course, Dijkstra - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Today, we will solve the problem of finding the shortest path using Dijkstra&#8217;s algorithm in Swift. The Dijkstra algorithm is one of the most important algorithms in graph theory and is used to find the shortest path from a specific node to all other nodes. Introduction to the Algorithm Dijkstra&#8217;s Algorithm is a graph search &hellip; \ub354 \ubcf4\uae30 &quot;Swift Coding Test Course, Dijkstra&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34710\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:31:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:26:53+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\/34710\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34710\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Swift Coding Test Course, Dijkstra\",\"datePublished\":\"2024-11-01T09:31:07+00:00\",\"dateModified\":\"2024-11-01T11:26:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34710\/\"},\"wordCount\":334,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Swift Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34710\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34710\/\",\"name\":\"Swift Coding Test Course, Dijkstra - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:31:07+00:00\",\"dateModified\":\"2024-11-01T11:26:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34710\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34710\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34710\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Swift Coding Test Course, Dijkstra\"}]},{\"@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":"Swift Coding Test Course, Dijkstra - \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\/34710\/","og_locale":"ko_KR","og_type":"article","og_title":"Swift Coding Test Course, Dijkstra - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Today, we will solve the problem of finding the shortest path using Dijkstra&#8217;s algorithm in Swift. The Dijkstra algorithm is one of the most important algorithms in graph theory and is used to find the shortest path from a specific node to all other nodes. Introduction to the Algorithm Dijkstra&#8217;s Algorithm is a graph search &hellip; \ub354 \ubcf4\uae30 \"Swift Coding Test Course, Dijkstra\"","og_url":"https:\/\/atmokpo.com\/w\/34710\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:31:07+00:00","article_modified_time":"2024-11-01T11:26:53+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\/34710\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34710\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Swift Coding Test Course, Dijkstra","datePublished":"2024-11-01T09:31:07+00:00","dateModified":"2024-11-01T11:26:53+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34710\/"},"wordCount":334,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Swift Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34710\/","url":"https:\/\/atmokpo.com\/w\/34710\/","name":"Swift Coding Test Course, Dijkstra - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:31:07+00:00","dateModified":"2024-11-01T11:26:53+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34710\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34710\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34710\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Swift Coding Test Course, Dijkstra"}]},{"@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\/34710","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=34710"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34710\/revisions"}],"predecessor-version":[{"id":34711,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34710\/revisions\/34711"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34710"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34710"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34710"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}