{"id":33343,"date":"2024-11-01T09:15:43","date_gmt":"2024-11-01T09:15:43","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33343"},"modified":"2024-11-01T11:39:05","modified_gmt":"2024-11-01T11:39:05","slug":"java-coding-test-course-dijkstra","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33343\/","title":{"rendered":"java coding test course, Dijkstra"},"content":{"rendered":"<p><body><\/p>\n<p>In this post, we will learn about Dijkstra&#8217;s algorithm and solve a problem using it. Dijkstra&#8217;s algorithm is an algorithm used to find the shortest path between each vertex in a graph and is mainly used in various pathfinding problems.<\/p>\n<h2>1. Understanding the Algorithm<\/h2>\n<p>Dijkstra&#8217;s algorithm is an efficient method for finding the shortest path from a starting vertex to all other vertices in a weighted graph. This algorithm works by calculating the path length to reach specific vertices and continuously updating the shortest path.<\/p>\n<h3>1.1. Basic Concepts<\/h3>\n<ul>\n<li><strong>Weighted Graph:<\/strong> A graph where each edge has a cost or weight assigned to it.<\/li>\n<li><strong>Priority Queue:<\/strong> Used to manage the current shortest paths.<\/li>\n<li><strong>Greedy Approach:<\/strong> A method of finding shorter paths based on the currently discovered shortest path.<\/li>\n<\/ul>\n<h2>2. Problem Statement<\/h2>\n<h3>Problem Description<\/h3>\n<p>This problem involves finding the shortest path between the starting vertex and the destination vertex in a given weighted graph. The graph is provided with a number of vertices and edges, and the weights of each edge are also given.<\/p>\n<h3>Input<\/h3>\n<ul>\n<li>First line: Number of vertices N (1 \u2264 N \u2264 1000)<\/li>\n<li>Second line: Number of edges M (1 \u2264 M \u2264 10000)<\/li>\n<li>Third line: Starting vertex S, destination vertex E<\/li>\n<li>The next M lines: Starting vertex A, ending vertex B, weight W of each edge (1 \u2264 A, B \u2264 N, 1 \u2264 W \u2264 10000)<\/li>\n<\/ul>\n<h3>Output<\/h3>\n<p>Print the length of the shortest path from the starting vertex S to the destination vertex E. If it cannot be reached, print -1.<\/p>\n<h2>3. Writing the Code<\/h2>\n<h3>3.1. Java Code<\/h3>\n<pre><code>import java.util.*;\n\npublic class Dijkstra {\n    static class Edge {\n        int to;\n        int weight;\n        Edge(int to, int weight) {\n            this.to = to;\n            this.weight = weight;\n        }\n    }\n\n    public static void main(String[] args) {\n        Scanner scanner = new Scanner(System.in);\n        \n        \/\/ Graph construction\n        int N = scanner.nextInt(); \/\/ Number of vertices\n        int M = scanner.nextInt(); \/\/ Number of edges\n        int S = scanner.nextInt(); \/\/ Starting vertex\n        int E = scanner.nextInt(); \/\/ Destination vertex\n\n        List<Edge>[] graph = new ArrayList[N + 1];\n        for (int i = 1; i <= N; i++) {\n            graph[i] = new ArrayList<>();\n        }\n\n        \/\/ Receive edge input\n        for (int i = 0; i < M; i++) {\n            int A = scanner.nextInt();\n            int B = scanner.nextInt();\n            int W = scanner.nextInt();\n            graph[A].add(new Edge(B, W));\n            graph[B].add(new Edge(A, W)); \/\/ Undirected graph\n        }\n\n        \/\/ Execute Dijkstra's algorithm\n        int result = dijkstra(graph, N, S, E);\n        System.out.println(result);\n    }\n\n    public static int dijkstra(List<Edge>[] graph, int N, int start, int end) {\n        int[] dist = new int[N + 1];\n        Arrays.fill(dist, Integer.MAX_VALUE);\n        dist[start] = 0;\n\n        PriorityQueue<Edge> pq = new PriorityQueue<>(Comparator.comparingInt(e -> e.weight));\n        pq.offer(new Edge(start, 0));\n\n        boolean[] visited = new boolean[N + 1];\n\n        while (!pq.isEmpty()) {\n            Edge current = pq.poll();\n            int currentNode = current.to;\n\n            if (visited[currentNode]) continue;\n            visited[currentNode] = true;\n\n            for (Edge edge : graph[currentNode]) {\n                if (visited[edge.to]) continue;\n\n                if (dist[currentNode] + edge.weight < dist[edge.to]) {\n                    dist[edge.to] = dist[currentNode] + edge.weight;\n                    pq.offer(new Edge(edge.to, dist[edge.to]));\n                }\n            }\n        }\n\n        return dist[end] == Integer.MAX_VALUE ? -1 : dist[end];\n    }\n}<\/code><\/pre>\n<h3>3.2. Code Explanation<\/h3>\n<p>The above code is an implementation of Dijkstra's algorithm written in Java. Here is an explanation of the main parts:<\/p>\n<ul>\n<li><strong>Edge Class:<\/strong> A class that defines the edges of the graph. Each edge has a destination node and a weight.<\/li>\n<li><strong>Graph Initialization:<\/strong> Initializes the graph using an adjacency list approach.<\/li>\n<li><strong>Priority Queue:<\/strong> Used to explore the current shortest paths, prioritizing nodes with shorter distances.<\/li>\n<li><strong>Dijkstra's Algorithm:<\/strong> In each iteration, it selects the node with the smallest distance and updates the distances of the connected nodes.<\/li>\n<\/ul>\n<h2>4. Time Complexity<\/h2>\n<p>The time complexity of Dijkstra's algorithm varies depending on the use of the priority queue. When using an array as a priority queue, it is O((N + M) log N). Here, N is the number of vertices and M is the number of edges. This algorithm performs well in graphs with many vertices compared to the number of edges.<\/p>\n<h2>5. Conclusion<\/h2>\n<p>In this post, we explored how to solve the shortest path problem using Dijkstra's algorithm. This algorithm can be applied in various fields, particularly in networks, mapping services, and optimization problems. Understanding and problem-solving abilities related to such algorithms are crucial in coding tests, so it is recommended to practice consistently.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this post, we will learn about Dijkstra&#8217;s algorithm and solve a problem using it. Dijkstra&#8217;s algorithm is an algorithm used to find the shortest path between each vertex in a graph and is mainly used in various pathfinding problems. 1. Understanding the Algorithm Dijkstra&#8217;s algorithm is an efficient method for finding the shortest path &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33343\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;java 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":[139],"tags":[],"class_list":["post-33343","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, 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\/33343\/\" \/>\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, Dijkstra - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In this post, we will learn about Dijkstra&#8217;s algorithm and solve a problem using it. Dijkstra&#8217;s algorithm is an algorithm used to find the shortest path between each vertex in a graph and is mainly used in various pathfinding problems. 1. Understanding the Algorithm Dijkstra&#8217;s algorithm is an efficient method for finding the shortest path &hellip; \ub354 \ubcf4\uae30 &quot;java coding test course, Dijkstra&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33343\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:15:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:39:05+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\/33343\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33343\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"java coding test course, Dijkstra\",\"datePublished\":\"2024-11-01T09:15:43+00:00\",\"dateModified\":\"2024-11-01T11:39:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33343\/\"},\"wordCount\":453,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Java Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33343\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33343\/\",\"name\":\"java coding test course, Dijkstra - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:15:43+00:00\",\"dateModified\":\"2024-11-01T11:39:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33343\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33343\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33343\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"java 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":"java 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\/33343\/","og_locale":"ko_KR","og_type":"article","og_title":"java coding test course, Dijkstra - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In this post, we will learn about Dijkstra&#8217;s algorithm and solve a problem using it. Dijkstra&#8217;s algorithm is an algorithm used to find the shortest path between each vertex in a graph and is mainly used in various pathfinding problems. 1. Understanding the Algorithm Dijkstra&#8217;s algorithm is an efficient method for finding the shortest path &hellip; \ub354 \ubcf4\uae30 \"java coding test course, Dijkstra\"","og_url":"https:\/\/atmokpo.com\/w\/33343\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:15:43+00:00","article_modified_time":"2024-11-01T11:39:05+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\/33343\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33343\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"java coding test course, Dijkstra","datePublished":"2024-11-01T09:15:43+00:00","dateModified":"2024-11-01T11:39:05+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33343\/"},"wordCount":453,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Java Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33343\/","url":"https:\/\/atmokpo.com\/w\/33343\/","name":"java coding test course, Dijkstra - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:15:43+00:00","dateModified":"2024-11-01T11:39:05+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33343\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33343\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33343\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"java 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\/33343","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=33343"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33343\/revisions"}],"predecessor-version":[{"id":33344,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33343\/revisions\/33344"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}