{"id":33576,"date":"2024-11-01T09:18:03","date_gmt":"2024-11-01T09:18:03","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33576"},"modified":"2024-11-01T11:47:34","modified_gmt":"2024-11-01T11:47:34","slug":"python-coding-test-course-finding-the-fastest-bus-route","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33576\/","title":{"rendered":"Python Coding Test Course, Finding the Fastest Bus Route"},"content":{"rendered":"<p><body><\/p>\n<p>This course covers the problem of <strong>Finding the Fastest Bus Route<\/strong>, which is frequently presented in actual job exam algorithm problems. This problem can be solved using graph theory and shortest path algorithms. Throughout the course, we will enhance our algorithm problem-solving skills and learn various techniques necessary for writing Python code.<\/p>\n<h2>Problem Description<\/h2>\n<p>There is a city with <code>N<\/code> vertices from <code>1<\/code> to <code>N<\/code>. There are several bus routes between each pair of vertices, and each bus route has a departure and arrival vertex along with a travel time. Based on the given information, find the fastest route from vertex <code>1<\/code> to vertex <code>N<\/code> and the time it takes.<\/p>\n<h3>Input Format<\/h3>\n<ul>\n<li>The first line contains the number of vertices <code>N<\/code> (1 \u2264 N \u2264 1000) and the number of bus routes <code>M<\/code> (1 \u2264 M \u2264 10000).<\/li>\n<li>The next <code>M<\/code> lines provide the information for each bus route in the format <code>u v w<\/code>, where <code>w<\/code> is the travel time from <code>u<\/code> to <code>v<\/code> (1 \u2264 w \u2264 10000).<\/li>\n<\/ul>\n<h3>Output Format<\/h3>\n<ul>\n<li>Print the fastest travel time from vertex <code>1<\/code> to vertex <code>N<\/code>. If there is no route, print <code>-1<\/code>.<\/li>\n<\/ul>\n<h2>Problem Solving Process<\/h2>\n<h3>1. Understanding the Problem<\/h3>\n<p>This problem is a representative type of graph problem in finding the shortest path. When bus routes are represented as a graph, each vertex corresponds to a bus stop, edges represent bus routes, and the weights of the edges can be thought of as the travel times. What we want to solve is the fastest way to move from vertex <code>1<\/code> to vertex <code>N<\/code>.<\/p>\n<h3>2. Selecting the Algorithm<\/h3>\n<p>There are various algorithms to find the shortest path, but here we will use the <strong>Dijkstra&#8217;s Algorithm<\/strong>. Dijkstra&#8217;s algorithm is efficient for finding the shortest paths in graphs with non-negative weights. Since the travel times for the given bus routes are all positive, this algorithm is appropriate.<\/p>\n<h3>3. Implementing the Algorithm<\/h3>\n<p>The basic idea of Dijkstra&#8217;s algorithm is to maintain an array that records the shortest path distances to each vertex while selecting the vertex with the currently shortest distance. The detailed implementation process is as follows.<\/p>\n<pre>\n# Import required libraries\nimport sys\nimport heapq\n\ndef dijkstra(N, edges):\n    # Initialize distance array\n    distance = [float('inf')] * (N + 1)\n    distance[1] = 0  # Distance to starting vertex 1 is 0\n    priority_queue = [(0, 1)]  # (distance, vertex)\n\n    # Initialize graph\n    graph = [[] for _ in range(N + 1)]\n    for u, v, w in edges:\n        graph[u].append((v, w))\n\n    while priority_queue:\n        current_distance, current_vertex = heapq.heappop(priority_queue)\n        \n        if current_distance > distance[current_vertex]:\n            continue\n\n        for neighbor, weight in graph[current_vertex]:\n            distance_via_neighbor = current_distance + weight\n            \n            if distance_via_neighbor < distance[neighbor]:\n                distance[neighbor] = distance_via_neighbor\n                heapq.heappush(priority_queue, (distance_via_neighbor, neighbor))\n\n    return distance[N] if distance[N] != float('inf') else -1\n\n# Input\nN, M = map(int, input().split())\nedges = [tuple(map(int, input().split())) for _ in range(M)]\nresult = dijkstra(N, edges)\n\nprint(result)\n<\/pre>\n<h3>4. Example and Test Cases<\/h3>\n<p>To verify the appropriateness of this algorithm, let's consider several input examples.<\/p>\n<h4>Example 1<\/h4>\n<pre>\nInput:\n4 5\n1 2 1\n1 3 4\n2 3 2\n3 4 1\n2 4 5\n\nOutput:\n3\n<\/pre>\n<p>Explanation: The shortest path from vertex 1 to vertex 4 is 1 \u2192 2 \u2192 3 \u2192 4, with a total travel time of 3.<\/p>\n<h4>Example 2<\/h4>\n<pre>\nInput:\n3 3\n1 2 1\n1 3 4\n3 2 2\n\nOutput:\n-1\n<\/pre>\n<p>Explanation: There is no route from vertex 1 to vertex 2, so we output -1.<\/p>\n<h2>Conclusion<\/h2>\n<p>In this course, we learned how to solve the problem of finding the fastest bus route using Dijkstra's algorithm for the shortest path. I hope this has been helpful in understanding and implementing the algorithm. As you may encounter similar problems in future coding tests, I encourage you to continue practicing.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This course covers the problem of Finding the Fastest Bus Route, which is frequently presented in actual job exam algorithm problems. This problem can be solved using graph theory and shortest path algorithms. Throughout the course, we will enhance our algorithm problem-solving skills and learn various techniques necessary for writing Python code. Problem Description There &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33576\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Python Coding Test Course, Finding the Fastest Bus Route&#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":[145],"tags":[],"class_list":["post-33576","post","type-post","status-publish","format-standard","hentry","category-python-coding-test"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python Coding Test Course, Finding the Fastest Bus Route - \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\/33576\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python Coding Test Course, Finding the Fastest Bus Route - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"This course covers the problem of Finding the Fastest Bus Route, which is frequently presented in actual job exam algorithm problems. This problem can be solved using graph theory and shortest path algorithms. Throughout the course, we will enhance our algorithm problem-solving skills and learn various techniques necessary for writing Python code. Problem Description There &hellip; \ub354 \ubcf4\uae30 &quot;Python Coding Test Course, Finding the Fastest Bus Route&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33576\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:18:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:47:34+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\/33576\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33576\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Python Coding Test Course, Finding the Fastest Bus Route\",\"datePublished\":\"2024-11-01T09:18:03+00:00\",\"dateModified\":\"2024-11-01T11:47:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33576\/\"},\"wordCount\":430,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Python Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33576\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33576\/\",\"name\":\"Python Coding Test Course, Finding the Fastest Bus Route - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:18:03+00:00\",\"dateModified\":\"2024-11-01T11:47:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33576\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33576\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33576\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python Coding Test Course, Finding the Fastest Bus Route\"}]},{\"@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":"Python Coding Test Course, Finding the Fastest Bus Route - \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\/33576\/","og_locale":"ko_KR","og_type":"article","og_title":"Python Coding Test Course, Finding the Fastest Bus Route - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"This course covers the problem of Finding the Fastest Bus Route, which is frequently presented in actual job exam algorithm problems. This problem can be solved using graph theory and shortest path algorithms. Throughout the course, we will enhance our algorithm problem-solving skills and learn various techniques necessary for writing Python code. Problem Description There &hellip; \ub354 \ubcf4\uae30 \"Python Coding Test Course, Finding the Fastest Bus Route\"","og_url":"https:\/\/atmokpo.com\/w\/33576\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:18:03+00:00","article_modified_time":"2024-11-01T11:47:34+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\/33576\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33576\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Python Coding Test Course, Finding the Fastest Bus Route","datePublished":"2024-11-01T09:18:03+00:00","dateModified":"2024-11-01T11:47:34+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33576\/"},"wordCount":430,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Python Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33576\/","url":"https:\/\/atmokpo.com\/w\/33576\/","name":"Python Coding Test Course, Finding the Fastest Bus Route - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:18:03+00:00","dateModified":"2024-11-01T11:47:34+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33576\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33576\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33576\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Python Coding Test Course, Finding the Fastest Bus Route"}]},{"@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\/33576","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=33576"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33576\/revisions"}],"predecessor-version":[{"id":33577,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33576\/revisions\/33577"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33576"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33576"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}