{"id":35086,"date":"2024-11-01T09:35:22","date_gmt":"2024-11-01T09:35:22","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=35086"},"modified":"2024-11-01T12:45:30","modified_gmt":"2024-11-01T12:45:30","slug":"%ec%bd%94%ed%8b%80%eb%a6%b0-%ec%bd%94%eb%94%a9%ed%85%8c%ec%8a%a4%ed%8a%b8-%ea%b0%95%ec%a2%8c-%ec%99%b8%ed%8c%90%ec%9b%90%ec%9d%98-%ec%88%9c%ed%9a%8c-%ea%b2%bd%eb%a1%9c-%ec%a7%9c%ea%b8%b0-2","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/35086\/","title":{"rendered":"Kotlin coding test course, designing the traveling salesman tour"},"content":{"rendered":"<p><body><\/p>\n<p>Hello, in this lecture we will learn how to solve the Traveling Salesman Problem using Kotlin.<\/p>\n<h2>1. Problem Definition<\/h2>\n<p>The Traveling Salesman Problem is the problem of finding the shortest possible route that visits each city once and returns to the original city. The input consists of the travel costs between cities, and the goal is to output a route that visits all cities at the minimum cost.<\/p>\n<h2>2. Problem Approach<\/h2>\n<p>The Traveling Salesman Problem is known to be NP-hard. Common solutions include brute force, dynamic programming, binary search, and greedy algorithms. However, in special cases dealing with small datasets, it can be solved using brute force.<\/p>\n<p>The approach to solving this problem is as follows:<\/p>\n<ol>\n<li>Represent the distances or costs between all cities in a table format.<\/li>\n<li>Generate all possible routes.<\/li>\n<li>Calculate the total cost of each route to find the minimum value.<\/li>\n<\/ol>\n<h2>3. Kotlin Code for Problem Solving<\/h2>\n<p>Now let&#8217;s write a code to solve this problem using Kotlin. The code below demonstrates a basic approach to solving the Traveling Salesman Problem:<\/p>\n<pre><code class=\"kotlin\">\nfun main() {\n    val n = 4 \/\/ Number of cities\n    val cost = arrayOf(\n        intArrayOf(0, 10, 15, 20),\n        intArrayOf(10, 0, 35, 25),\n        intArrayOf(15, 35, 0, 30),\n        intArrayOf(20, 25, 30, 0)\n    )\n\n    val visited = BooleanArray(n)\n    visited[0] = true \/\/ Set the starting point to the first city\n    val result = tsp(0, 1, cost, visited, 0, n)\n    println(\"Minimum cost is: $result\")\n}\n\nfun tsp(current: Int, count: Int, cost: Array<intarray>, visited: BooleanArray, totalCost: Int, n: Int): Int {\n    if (count == n) {\n        return totalCost + cost[current][0] \/\/ Return to the starting city after visiting all cities\n    }\n\n    var minCost = Int.MAX_VALUE\n    \n    for (i in 0 until n) {\n        if (!visited[i]) { \/\/ If the city has not been visited\n            visited[i] = true \/\/ Mark city as visited\n            val newCost = tsp(i, count + 1, cost, visited, totalCost + cost[current][i], n)\n            minCost = Math.min(minCost, newCost) \/\/ Calculate minimum cost\n            visited[i] = false \/\/ Backtracking\n        }\n    }\n    \n    return minCost\n}\n<\/intarray><\/code><\/pre>\n<h2>4. Code Explanation<\/h2>\n<p>The above code uses a simple recursive approach to solve the Traveling Salesman Problem. The structure of each function is as follows:<\/p>\n<ul>\n<li><strong>main function:<\/strong> Initializes the number of cities and the cost array. Calls the <code>tsp<\/code> function to compute the minimum route.<\/li>\n<li><strong>tsp function:<\/strong> Takes current city, number of visited cities, cost array, visitation record, total cost so far, and number of cities as parameters. If all cities have been visited, it returns the cost to return to the starting city along with the minimum cost.<\/li>\n<\/ul>\n<h2>5. Process Overview<\/h2>\n<p>A brief look at how the code works:<\/p>\n<ol>\n<li>Organizes the given cities in an array (cost) format.<\/li>\n<li>Starts from the first city and recursively explores all possible routes.<\/li>\n<li>Calculates the total cost for each route and updates the minimum cost.<\/li>\n<li>Returns the cost of the current route every time all cities are visited.<\/li>\n<\/ol>\n<h2>6. Conclusion<\/h2>\n<p>In this session, we learned how to solve the Traveling Salesman Problem using Kotlin. This problem is a very important case in computer science and algorithm education, and understanding it will greatly help in learning various optimization problems. Furthermore, for large-scale problems, it is essential to learn significant techniques such as dynamic programming.<\/p>\n<p>In the next lecture, we will cover more advanced algorithms and various problem-solving techniques. Thank you!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello, in this lecture we will learn how to solve the Traveling Salesman Problem using Kotlin. 1. Problem Definition The Traveling Salesman Problem is the problem of finding the shortest possible route that visits each city once and returns to the original city. The input consists of the travel costs between cities, and the goal &hellip; <a href=\"https:\/\/atmokpo.com\/w\/35086\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Kotlin coding test course, designing the traveling salesman tour&#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-35086","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>Kotlin coding test course, designing the traveling salesman tour - \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\/35086\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kotlin coding test course, designing the traveling salesman tour - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Hello, in this lecture we will learn how to solve the Traveling Salesman Problem using Kotlin. 1. Problem Definition The Traveling Salesman Problem is the problem of finding the shortest possible route that visits each city once and returns to the original city. The input consists of the travel costs between cities, and the goal &hellip; \ub354 \ubcf4\uae30 &quot;Kotlin coding test course, designing the traveling salesman tour&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/35086\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:35:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T12:45:30+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\/35086\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35086\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Kotlin coding test course, designing the traveling salesman tour\",\"datePublished\":\"2024-11-01T09:35:22+00:00\",\"dateModified\":\"2024-11-01T12:45:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35086\/\"},\"wordCount\":393,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Kotlin coding test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/35086\/\",\"url\":\"https:\/\/atmokpo.com\/w\/35086\/\",\"name\":\"Kotlin coding test course, designing the traveling salesman tour - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:35:22+00:00\",\"dateModified\":\"2024-11-01T12:45:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35086\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/35086\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/35086\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kotlin coding test course, designing the traveling salesman tour\"}]},{\"@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":"Kotlin coding test course, designing the traveling salesman tour - \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\/35086\/","og_locale":"ko_KR","og_type":"article","og_title":"Kotlin coding test course, designing the traveling salesman tour - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Hello, in this lecture we will learn how to solve the Traveling Salesman Problem using Kotlin. 1. Problem Definition The Traveling Salesman Problem is the problem of finding the shortest possible route that visits each city once and returns to the original city. The input consists of the travel costs between cities, and the goal &hellip; \ub354 \ubcf4\uae30 \"Kotlin coding test course, designing the traveling salesman tour\"","og_url":"https:\/\/atmokpo.com\/w\/35086\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:35:22+00:00","article_modified_time":"2024-11-01T12:45:30+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\/35086\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/35086\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Kotlin coding test course, designing the traveling salesman tour","datePublished":"2024-11-01T09:35:22+00:00","dateModified":"2024-11-01T12:45:30+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/35086\/"},"wordCount":393,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Kotlin coding test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/35086\/","url":"https:\/\/atmokpo.com\/w\/35086\/","name":"Kotlin coding test course, designing the traveling salesman tour - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:35:22+00:00","dateModified":"2024-11-01T12:45:30+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/35086\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/35086\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/35086\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Kotlin coding test course, designing the traveling salesman tour"}]},{"@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\/35086","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=35086"}],"version-history":[{"count":2,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/35086\/revisions"}],"predecessor-version":[{"id":38088,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/35086\/revisions\/38088"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=35086"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=35086"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=35086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}