{"id":35072,"date":"2024-11-01T09:35:15","date_gmt":"2024-11-01T09:35:15","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=35072"},"modified":"2024-11-01T11:45:05","modified_gmt":"2024-11-01T11:45:05","slug":"sign-up-for-kotlin-coding-test-course-planning-a-trip","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/35072\/","title":{"rendered":"Sign up for Kotlin coding test course, planning a trip"},"content":{"rendered":"<p><body><\/p>\n<h2>Problem Description<\/h2>\n<p>When planning a trip, we need to consider the time and cost required to travel between several cities. Let&#8217;s solve the problem of creating an optimal travel plan based on the information provided below.<\/p>\n<h2>Problem: Travel Route Optimization<\/h2>\n<p>You are given a graph representing N cities and the travel time\/cost between each pair of cities. Write a program to calculate the optimal route that starts from the initial city, visits all cities in minimum time or cost, and returns to the starting city.<\/p>\n<h3>Input<\/h3>\n<ul>\n<li>The first line contains the number of cities N (1 \u2264 N \u2264 12).<\/li>\n<li>Next, an N x N matrix is provided where each element represents the travel time (or cost) between two cities. If travel is not possible, it is represented by -1.<\/li>\n<\/ul>\n<h3>Output<\/h3>\n<p>Print the minimum travel time (or cost).<\/p>\n<h2>Example<\/h2>\n<div class=\"example\">\n<strong>Input:<\/strong><br \/>\n        4<br \/>\n        0 10 15 20<br \/>\n        10 0 -1 25<br \/>\n        15 -1 0 30<br \/>\n        20 25 30 0<\/p>\n<p><strong>Output:<\/strong><br \/>\n        75\n    <\/div>\n<h2>Problem Solving Process<\/h2>\n<h3>1. Understanding the Problem<\/h3>\n<p>This problem involves finding a path that minimizes the travel time between the given cities. This is commonly known as the <strong>Traveling Salesman Problem (TSP)<\/strong>, which is an NP-hard problem. The input graph is represented as an adjacency matrix, and we need to explore the optimal route based on this matrix.<\/p>\n<h3>2. Approach<\/h3>\n<p>To solve this problem, we will combine Depth-First Search (DFS) with a Dynamic Programming (DP) technique using bit masking. Bit masking allows us to efficiently represent the state of visited cities and helps avoid redundant calculations.<\/p>\n<h3>3. Kotlin Implementation<\/h3>\n<pre>\n        <code>\n        fun findMinCost(graph: Array<intarray>, visited: Int, pos: Int, n: Int, memo: Array<intarray>): Int {\n            \/\/ If all cities have been visited\n            if (visited == (1 shl n) - 1) {\n                return graph[pos][0] \/\/ Return to the starting city\n            }\n\n            \/\/ Memoization check\n            if (memo[visited][pos] != -1) {\n                return memo[visited][pos]\n            }\n\n            var ans = Int.MAX_VALUE\n\n            \/\/ Explore all cities\n            for (city in 0 until n) {\n                \/\/ If not visited and travel is possible\n                if ((visited and (1 shl city)) == 0 &amp;&amp; graph[pos][city] != -1) {\n                    val newCost = graph[pos][city] + findMinCost(graph, visited or (1 shl city), city, n, memo)\n                    ans = Math.min(ans, newCost)\n                }\n            }\n\n            \/\/ Save in memoization\n            memo[visited][pos] = ans\n            return ans\n        }\n\n        fun tsp(graph: Array<intarray>, n: Int): Int {\n            \/\/ Initialization\n            val memo = Array(1 shl n) { IntArray(n) { -1 } }\n            return findMinCost(graph, 1, 0, n, memo)\n        }\n\n        fun main() {\n            val graph = arrayOf(\n                intArrayOf(0, 10, 15, 20),\n                intArrayOf(10, 0, -1, 25),\n                intArrayOf(15, -1, 0, 30),\n                intArrayOf(20, 25, 30, 0)\n            )\n            val n = graph.size\n            val result = tsp(graph, n)\n            println(\"Minimum travel cost: $result\")\n        }\n        <\/intarray><\/intarray><\/intarray><\/code>\n    <\/pre>\n<h3>4. Code Explanation<\/h3>\n<p>The above code shows the overall flow of the algorithm for optimizing the travel route. The main parts are as follows:<\/p>\n<ul>\n<li><strong>findMinCost<\/strong>: Takes the current city and the state of visited cities as parameters and recursively calculates the minimum cost.<\/li>\n<li><strong>tsp<\/strong>: Calculates the overall minimum cost using bit masking and memoization.<\/li>\n<\/ul>\n<h3>5. Performance Analysis<\/h3>\n<p>This code has a time complexity of <code>O(N^2 * 2^N)<\/code>, where N is the number of cities. This is due to the nature of searching all paths with DFS and the feature of storing visited states using bit masking. It is practically executable for inputs with up to 12 cities, making it efficient for reasonably sized inputs.<\/p>\n<h2>Conclusion<\/h2>\n<p>Through the travel planning algorithm problem, we have learned how to utilize Dynamic Programming techniques with DFS and bit masking. This is a valuable skill for coding tests and algorithm challenges, so be sure to master it. Keep improving your algorithm skills through various problems!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem Description When planning a trip, we need to consider the time and cost required to travel between several cities. Let&#8217;s solve the problem of creating an optimal travel plan based on the information provided below. Problem: Travel Route Optimization You are given a graph representing N cities and the travel time\/cost between each pair &hellip; <a href=\"https:\/\/atmokpo.com\/w\/35072\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Sign up for Kotlin coding test course, planning a trip&#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":[106],"tags":[],"class_list":["post-35072","post","type-post","status-publish","format-standard","hentry","category----en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Sign up for Kotlin coding test course, planning a trip - \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\/35072\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sign up for Kotlin coding test course, planning a trip - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Problem Description When planning a trip, we need to consider the time and cost required to travel between several cities. Let&#8217;s solve the problem of creating an optimal travel plan based on the information provided below. Problem: Travel Route Optimization You are given a graph representing N cities and the travel time\/cost between each pair &hellip; \ub354 \ubcf4\uae30 &quot;Sign up for Kotlin coding test course, planning a trip&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/35072\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:35:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:45: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=\"3\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/35072\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35072\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Sign up for Kotlin coding test course, planning a trip\",\"datePublished\":\"2024-11-01T09:35:15+00:00\",\"dateModified\":\"2024-11-01T11:45:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35072\/\"},\"wordCount\":401,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Kotlin coding test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/35072\/\",\"url\":\"https:\/\/atmokpo.com\/w\/35072\/\",\"name\":\"Sign up for Kotlin coding test course, planning a trip - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:35:15+00:00\",\"dateModified\":\"2024-11-01T11:45:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35072\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/35072\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/35072\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sign up for Kotlin coding test course, planning a trip\"}]},{\"@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":"Sign up for Kotlin coding test course, planning a trip - \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\/35072\/","og_locale":"ko_KR","og_type":"article","og_title":"Sign up for Kotlin coding test course, planning a trip - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Problem Description When planning a trip, we need to consider the time and cost required to travel between several cities. Let&#8217;s solve the problem of creating an optimal travel plan based on the information provided below. Problem: Travel Route Optimization You are given a graph representing N cities and the travel time\/cost between each pair &hellip; \ub354 \ubcf4\uae30 \"Sign up for Kotlin coding test course, planning a trip\"","og_url":"https:\/\/atmokpo.com\/w\/35072\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:35:15+00:00","article_modified_time":"2024-11-01T11:45: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":"3\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/35072\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/35072\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Sign up for Kotlin coding test course, planning a trip","datePublished":"2024-11-01T09:35:15+00:00","dateModified":"2024-11-01T11:45:05+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/35072\/"},"wordCount":401,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Kotlin coding test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/35072\/","url":"https:\/\/atmokpo.com\/w\/35072\/","name":"Sign up for Kotlin coding test course, planning a trip - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:35:15+00:00","dateModified":"2024-11-01T11:45:05+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/35072\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/35072\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/35072\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Sign up for Kotlin coding test course, planning a trip"}]},{"@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\/35072","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=35072"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/35072\/revisions"}],"predecessor-version":[{"id":35073,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/35072\/revisions\/35073"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=35072"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=35072"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=35072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}