{"id":35166,"date":"2024-11-01T09:36:18","date_gmt":"2024-11-01T09:36:18","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=35166"},"modified":"2024-11-01T11:44:47","modified_gmt":"2024-11-01T11:44:47","slug":"kotlin-coding-test-course-two-pointers","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/35166\/","title":{"rendered":"Kotlin Coding Test Course, Two Pointers"},"content":{"rendered":"<p><body><\/p>\n<p>This article explains the two-pointer technique for solving algorithm problems using Kotlin. The two-pointer technique is an algorithmic technique that uses two pointers to find values or ranges that satisfy specific conditions within an array or list, and it is commonly used in problems related to sorted arrays.<\/p>\n<h2>Problem Description<\/h2>\n<p>Here is a problem that can be solved using the two-pointer technique.<\/p>\n<h3>Problem: Two Sum<\/h3>\n<p>Given an integer array <code>nums<\/code> and an integer <code>target<\/code>, return the indices of the two numbers such that they add up to <code>target<\/code>. Assume that each input has exactly one solution, and you may not use the same element twice.<\/p>\n<p>For example:<\/p>\n<ul>\n<li>Input: <code>nums = [2, 7, 11, 15], target = 9<\/code><\/li>\n<li>Output: <code>[0, 1]<\/code> (nums[0] + nums[1] = 2 + 7 = 9)<\/li>\n<\/ul>\n<h2>Problem Approach<\/h2>\n<p>This problem can be solved using the two-pointer technique. However, we need to sort the array first, which requires tracking the original indices. We can solve the problem using a typical two-pointer approach.<\/p>\n<h3>Step 1: Sort the Input Array<\/h3>\n<p>Sort the array so that each pointer can compare values at the appropriate positions. In this case, we need to store each element along with its index.<\/p>\n<h3>Step 2: Set Up Two Pointers<\/h3>\n<p>One pointer starts at the beginning of the array, while the other pointer starts at the end. Move the pointers if the sum of the values they point to is equal to or less than <code>target<\/code>.<\/p>\n<h3>Step 3: Check the Condition<\/h3>\n<p>If the sum is greater than <code>target<\/code>, move the right pointer to the left; if it is less, move the left pointer to the right. Repeat this process until the two pointers meet.<\/p>\n<h2>Kotlin Code<\/h2>\n<p>Below is the code implemented in Kotlin:<\/p>\n<pre>\n<code>\nfun twoSum(nums: IntArray, target: Int): IntArray {\n    val indexedNums = nums.mapIndexed { index, num -> index to num }.sortedBy { it.second }\n    var left = 0\n    var right = indexedNums.size - 1\n\n    while (left < right) {\n        val sum = indexedNums[left].second + indexedNums[right].second\n        when {\n            sum == target -> return intArrayOf(indexedNums[left].first, indexedNums[right].first)\n            sum < target -> left++\n            else -> right--\n        }\n    }\n    throw IllegalArgumentException(\"No two sum solution\")\n}\n<\/code>\n<\/pre>\n<h2>Time Complexity<\/h2>\n<p>The time complexity of this algorithm is <code>O(n log n)<\/code>. This is due to the time spent sorting the array, which is the most significant factor. After that, the time taken to find the two sums using the two-pointer method is <code>O(n)<\/code>.<\/p>\n<h2>Conclusion<\/h2>\n<p>The two-pointer technique is a very useful algorithmic approach that can efficiently solve many problems. Through this problem, we learned how to manage arrays and find values using the two-pointer technique. With practice, you can master this technique and develop the ability to solve more complex problems.<\/p>\n<h2>Additional Practice Problems<\/h2>\n<p>Here are some additional two-pointer problems to practice:<\/p>\n<ul>\n<li>Finding all pairs in a given integer array that sum up to a specific value<\/li>\n<li>Finding the number of pairs of two numbers that add up to <code>k<\/code> using two pointers in a sorted array<\/li>\n<li>Using two pointers to determine if a string is a palindrome<\/li>\n<\/ul>\n<p>By practicing these problems, you can deepen your understanding of the two-pointer technique.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article explains the two-pointer technique for solving algorithm problems using Kotlin. The two-pointer technique is an algorithmic technique that uses two pointers to find values or ranges that satisfy specific conditions within an array or list, and it is commonly used in problems related to sorted arrays. Problem Description Here is a problem that &hellip; <a href=\"https:\/\/atmokpo.com\/w\/35166\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Kotlin Coding Test Course, Two Pointers&#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-35166","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, Two Pointers - \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\/35166\/\" \/>\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, Two Pointers - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"This article explains the two-pointer technique for solving algorithm problems using Kotlin. The two-pointer technique is an algorithmic technique that uses two pointers to find values or ranges that satisfy specific conditions within an array or list, and it is commonly used in problems related to sorted arrays. Problem Description Here is a problem that &hellip; \ub354 \ubcf4\uae30 &quot;Kotlin Coding Test Course, Two Pointers&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/35166\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:36:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:44:47+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\/35166\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35166\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Kotlin Coding Test Course, Two Pointers\",\"datePublished\":\"2024-11-01T09:36:18+00:00\",\"dateModified\":\"2024-11-01T11:44:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35166\/\"},\"wordCount\":423,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Kotlin coding test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/35166\/\",\"url\":\"https:\/\/atmokpo.com\/w\/35166\/\",\"name\":\"Kotlin Coding Test Course, Two Pointers - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:36:18+00:00\",\"dateModified\":\"2024-11-01T11:44:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/35166\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/35166\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/35166\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kotlin Coding Test Course, Two Pointers\"}]},{\"@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, Two Pointers - \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\/35166\/","og_locale":"ko_KR","og_type":"article","og_title":"Kotlin Coding Test Course, Two Pointers - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"This article explains the two-pointer technique for solving algorithm problems using Kotlin. The two-pointer technique is an algorithmic technique that uses two pointers to find values or ranges that satisfy specific conditions within an array or list, and it is commonly used in problems related to sorted arrays. Problem Description Here is a problem that &hellip; \ub354 \ubcf4\uae30 \"Kotlin Coding Test Course, Two Pointers\"","og_url":"https:\/\/atmokpo.com\/w\/35166\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:36:18+00:00","article_modified_time":"2024-11-01T11:44:47+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\/35166\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/35166\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Kotlin Coding Test Course, Two Pointers","datePublished":"2024-11-01T09:36:18+00:00","dateModified":"2024-11-01T11:44:47+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/35166\/"},"wordCount":423,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Kotlin coding test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/35166\/","url":"https:\/\/atmokpo.com\/w\/35166\/","name":"Kotlin Coding Test Course, Two Pointers - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:36:18+00:00","dateModified":"2024-11-01T11:44:47+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/35166\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/35166\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/35166\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Kotlin Coding Test Course, Two Pointers"}]},{"@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\/35166","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=35166"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/35166\/revisions"}],"predecessor-version":[{"id":35167,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/35166\/revisions\/35167"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=35166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=35166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=35166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}