{"id":35028,"date":"2024-11-01T09:34:48","date_gmt":"2024-11-01T09:34:48","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=35028"},"modified":"2024-11-01T11:45:15","modified_gmt":"2024-11-01T11:45:15","slug":"title-kotlin-coding-test-course-gift-delivery","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/35028\/","title":{"rendered":"Title: Kotlin Coding Test Course, Gift Delivery"},"content":{"rendered":"<p><body><\/p>\n<div class=\"section\">\n<p>This article deals with solving problems that frequently appear in job interviews or algorithm tests, presenting a way to develop both the basics of Kotlin and problem-solving skills through the topic of &#8220;Gift Giving.&#8221; This problem is based on the fundamental concepts of graph theory and provides logic that can be applied in real life.<\/p>\n<\/div>\n<div class=\"section\">\n<h2>Problem Description<\/h2>\n<p>The given array <code>gifts<\/code> contains N people, with the priorities of the <code>gift<\/code> that need to be delivered to each person listed in order. Each person has a specific number of gifts, and these gifts must be delivered to their counterparts. Our goal is to ensure that everyone receives the exact gifts they want exactly once, while calculating the minimum number of gift delivery actions required to achieve this.<\/p>\n<p>For example, let&#8217;s assume the following input is provided:<\/p>\n<pre><code>gifts = [2, 0, 1, 3]<\/code><\/pre>\n<p>In this case, each person delivers gifts as follows:<\/p>\n<ul>\n<li>Person 0: delivers to person 2<\/li>\n<li>Person 1: delivers to person 0<\/li>\n<li>Person 2: delivers to person 1<\/li>\n<li>Person 3: delivers to themselves<\/li>\n<\/ul>\n<p>Therefore, 3 actions are needed. Let&#8217;s implement an algorithm to solve this problem in Kotlin.<\/p>\n<\/div>\n<div class=\"section\">\n<h2>Approach to the Problem<\/h2>\n<p>To solve this problem, we need to clearly understand each person&#8217;s gift delivery and identify the delivery cycle structure. By applying simple exception handling, we can skip any person who does not need to deliver a gift.<\/p>\n<h3>Approach<\/h3>\n<ol>\n<li>Define the length of the input array <code>gifts<\/code> as N.<\/li>\n<li>Check the direction of gifts that each person needs to deliver.<\/li>\n<li>Simulate the process of delivering gifts by visiting each person.<\/li>\n<li>Count the size of the group and identify the cycles of received gifts.<\/li>\n<li>Finally, calculate the minimum number of necessary delivery actions.<\/li>\n<\/ol>\n<\/div>\n<div class=\"section\">\n<h2>Code Implementation<\/h2>\n<p>Below is the Kotlin code implemented according to the approach above:<\/p>\n<pre><code>fun minGiftTransfers(gifts: IntArray): Int {\n    val visited = BooleanArray(gifts.size)\n    var transfers = 0\n\n    for (i in gifts.indices) {\n        if (!visited[i]) {\n            var current = i\n            var cycleSize = 0\n\n            do {\n                visited[current] = true\n                current = gifts[current]\n                cycleSize++\n            } while (current != i)\n\n            \/\/ Exclude the axle (1 gift delivered to each other)\n            if (cycleSize > 1) {\n                transfers += (cycleSize - 1)\n            }\n        }\n    }\n\n    return transfers\n}\n\n\/\/ Test case\nfun main() {\n    val gifts = intArrayOf(2, 0, 1, 3)\n    println(\"The minimum number of actions required for gift delivery is: ${minGiftTransfers(gifts)}\")\n}<\/code><\/pre>\n<\/div>\n<div class=\"section\">\n<h2>Test Cases<\/h2>\n<p>To test the given function, I created several diverse test cases:<\/p>\n<ul>\n<li>\n<strong>Test 1:<\/strong> Input <code>gifts = [1, 0]<\/code><br \/>\n<code>expected output = 1<\/code> (Person 0 delivers to person 1)\n        <\/li>\n<li>\n<strong>Test 2:<\/strong> Input <code>gifts = [1, 2, 0]<\/code><br \/>\n<code>expected output = 1<\/code> (3 people are interconnected)\n        <\/li>\n<li>\n<strong>Test 3:<\/strong> Input <code>gifts = [1, 2, 3, 4, 0]<\/code><br \/>\n<code>expected output = 4<\/code> (Everyone delivers to a different person)\n        <\/li>\n<li>\n<strong>Test 4:<\/strong> Input <code>gifts = [0, 1, 2, 3, 4]<\/code><br \/>\n<code>expected output = 0<\/code> (Delivers to themselves)\n        <\/li>\n<\/ul>\n<\/div>\n<div class=\"section\">\n<h2>Conclusion<\/h2>\n<p>In this tutorial, we explored the process of solving the &#8220;Gift Giving&#8221; problem using Kotlin. To solve algorithmic problems, it&#8217;s essential to clearly understand the requirements and constraints of the problem, and to seek efficient methods to handle them. Through this process, we were able to review the basic syntax of Kotlin while enhancing our ability to structure logic.<\/p>\n<p>Practice other related algorithm problems to gain more experience and improve your competitiveness in algorithm tests!<\/p>\n<\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article deals with solving problems that frequently appear in job interviews or algorithm tests, presenting a way to develop both the basics of Kotlin and problem-solving skills through the topic of &#8220;Gift Giving.&#8221; This problem is based on the fundamental concepts of graph theory and provides logic that can be applied in real life. &hellip; <a href=\"https:\/\/atmokpo.com\/w\/35028\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Title: Kotlin Coding Test Course, Gift Delivery&#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-35028","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>Title: Kotlin Coding Test Course, Gift Delivery - \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\/35028\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Title: Kotlin Coding Test Course, Gift Delivery - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"This article deals with solving problems that frequently appear in job interviews or algorithm tests, presenting a way to develop both the basics of Kotlin and problem-solving skills through the topic of &#8220;Gift Giving.&#8221; This problem is based on the fundamental concepts of graph theory and provides logic that can be applied in real life. &hellip; \ub354 \ubcf4\uae30 &quot;Title: Kotlin Coding Test Course, Gift Delivery&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/35028\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:34:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:45:15+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\/35028\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35028\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Title: Kotlin Coding Test Course, Gift Delivery\",\"datePublished\":\"2024-11-01T09:34:48+00:00\",\"dateModified\":\"2024-11-01T11:45:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35028\/\"},\"wordCount\":403,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Kotlin coding test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/35028\/\",\"url\":\"https:\/\/atmokpo.com\/w\/35028\/\",\"name\":\"Title: Kotlin Coding Test Course, Gift Delivery - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:34:48+00:00\",\"dateModified\":\"2024-11-01T11:45:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35028\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/35028\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/35028\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Title: Kotlin Coding Test Course, Gift Delivery\"}]},{\"@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":"Title: Kotlin Coding Test Course, Gift Delivery - \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\/35028\/","og_locale":"ko_KR","og_type":"article","og_title":"Title: Kotlin Coding Test Course, Gift Delivery - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"This article deals with solving problems that frequently appear in job interviews or algorithm tests, presenting a way to develop both the basics of Kotlin and problem-solving skills through the topic of &#8220;Gift Giving.&#8221; This problem is based on the fundamental concepts of graph theory and provides logic that can be applied in real life. &hellip; \ub354 \ubcf4\uae30 \"Title: Kotlin Coding Test Course, Gift Delivery\"","og_url":"https:\/\/atmokpo.com\/w\/35028\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:34:48+00:00","article_modified_time":"2024-11-01T11:45:15+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\/35028\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/35028\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Title: Kotlin Coding Test Course, Gift Delivery","datePublished":"2024-11-01T09:34:48+00:00","dateModified":"2024-11-01T11:45:15+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/35028\/"},"wordCount":403,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Kotlin coding test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/35028\/","url":"https:\/\/atmokpo.com\/w\/35028\/","name":"Title: Kotlin Coding Test Course, Gift Delivery - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:34:48+00:00","dateModified":"2024-11-01T11:45:15+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/35028\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/35028\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/35028\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Title: Kotlin Coding Test Course, Gift Delivery"}]},{"@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\/35028","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=35028"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/35028\/revisions"}],"predecessor-version":[{"id":35029,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/35028\/revisions\/35029"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=35028"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=35028"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=35028"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}