{"id":34930,"date":"2024-11-01T09:33:45","date_gmt":"2024-11-01T09:33:45","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34930"},"modified":"2024-11-01T12:56:16","modified_gmt":"2024-11-01T12:56:16","slug":"doctype-kotlin-coding-test-course-dna-password","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34930\/","title":{"rendered":"Kotlin Coding Test Course, DNA Password"},"content":{"rendered":"<p>Coding tests play an important role in the hiring process of software developers, with many companies devising various problems to evaluate candidates&#8217; algorithm problem-solving skills. In this chapter, we will take a closer look at how to solve the &#8216;DNA Password&#8217; problem using Kotlin.<\/p>\n<h2>Problem Description<\/h2>\n<p>The DNA Password problem has the following conditions:<\/p>\n<ul>\n<li>A DNA password is a string composed of the letters A, C, G, and T.<\/li>\n<li>You need to find a substring in the given DNA string that meets specific conditions.<\/li>\n<li>Each DNA string must contain at least M of specific characters.<\/li>\n<\/ul>\n<p>For example, if the DNA string is &#8220;ACGTACGT&#8221; and M=2, then &#8216;A&#8217; must appear at least twice, and &#8216;C&#8217; must appear at least twice.<\/p>\n<h3>Example Problem<\/h3>\n<p>Given DNA string: ACGTACGT<br \/>\nRequired character count: M=2<br \/>\nRequired DNA characters: {&#8216;A&#8217;, &#8216;C&#8217;}<\/p>\n<h3>Goal<\/h3>\n<p>The goal is to find all substrings in the given DNA string that satisfy the required characters and count them.<\/p>\n<h2>Problem-Solving Approach<\/h2>\n<p>To solve this problem, we will use the sliding window technique. This technique involves moving a window over the given string while checking the required character count.<\/p>\n<h3>Explanation of the Sliding Window Technique<\/h3>\n<p>The sliding window proceeds through the following steps:<\/p>\n<ul>\n<li>Set the starting and ending points of the window and check if the initial state meets the conditions.<\/li>\n<li>Move the window while checking the number of required characters at each position.<\/li>\n<li>If the number of characters meets the condition, increase the count.<\/li>\n<\/ul>\n<h2>Kotlin Code Implementation<\/h2>\n<p>Here is the Kotlin code to solve the DNA Password problem:<\/p>\n<pre><code class=\"language-kotlin\">\nfun countDnaPasswords(dna: String, requiredChars: Set<Char>, minCount: Int): Int {\n    val charCount = mutableMapOf<Char, Int>()\n    var validPasswords = 0\n    var left = 0\n\n    for (right in dna.indices) {\n        charCount[dna[right]] = charCount.getOrDefault(dna[right], 0) + 1\n\n        while (requiredChars.all { charCount.getOrDefault(it, 0) >= minCount }) {\n            validPasswords++\n            charCount[dna[left]] = charCount[dna[left]]!! - 1\n            if (charCount[dna[left]] == 0) {\n                charCount.remove(dna[left])\n            }\n            left++\n        }\n    }\n\n    return validPasswords\n}\n\n\/\/ Example usage\nfun main() {\n    val dna = \"ACGTACGT\"\n    val requiredChars = setOf('A', 'C')\n    val minCount = 2\n    println(countDnaPasswords(dna, requiredChars, minCount))  \/\/ Output: 6\n}\n<\/code><\/pre>\n<h2>Code Explanation<\/h2>\n<p>The code above operates with the following logic:<\/p>\n<ul>\n<li><strong>Function Definition:<\/strong> The countDnaPasswords function takes the DNA string, a set of required characters, and the minimum number of required characters as parameters.<\/li>\n<li><strong>Initialization of Count:<\/strong> It initializes a map to count the occurrence of required characters.<\/li>\n<li><strong>Sliding Window Implementation:<\/strong> It traverses the string using a right pointer while updating the count of each character.<\/li>\n<li><strong>Condition Check:<\/strong> When all required characters are satisfied, it increments the count and moves the left pointer to reduce the window.<\/li>\n<\/ul>\n<h2>Complexity Analysis<\/h2>\n<p>The time complexity of the above algorithm is O(n). This is because it checks the required characters by traversing the string once. The additional space complexity is O(1), which may vary depending on the number of required characters, but since it stores a maximum of 4 characters, it is constant space.<\/p>\n<h2>Conclusion<\/h2>\n<p>In this post, we learned the sliding window technique through the DNA Password problem and explored how to solve it using Kotlin. These algorithm problems are very useful in the job preparation process and will help with coding test preparation. It is recommended to modify and apply the code to various situations and practice more problems.<\/p>\n<p>In the next post, we will cover a wider range of algorithm problems, so please stay tuned!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Coding tests play an important role in the hiring process of software developers, with many companies devising various problems to evaluate candidates&#8217; algorithm problem-solving skills. In this chapter, we will take a closer look at how to solve the &#8216;DNA Password&#8217; problem using Kotlin. Problem Description The DNA Password problem has the following conditions: A &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34930\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Kotlin Coding Test Course, DNA Password&#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-34930","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, DNA Password - \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\/34930\/\" \/>\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, DNA Password - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Coding tests play an important role in the hiring process of software developers, with many companies devising various problems to evaluate candidates&#8217; algorithm problem-solving skills. In this chapter, we will take a closer look at how to solve the &#8216;DNA Password&#8217; problem using Kotlin. Problem Description The DNA Password problem has the following conditions: A &hellip; \ub354 \ubcf4\uae30 &quot;Kotlin Coding Test Course, DNA Password&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34930\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:33:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T12:56:16+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\/34930\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34930\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Kotlin Coding Test Course, DNA Password\",\"datePublished\":\"2024-11-01T09:33:45+00:00\",\"dateModified\":\"2024-11-01T12:56:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34930\/\"},\"wordCount\":473,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Kotlin coding test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34930\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34930\/\",\"name\":\"Kotlin Coding Test Course, DNA Password - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:33:45+00:00\",\"dateModified\":\"2024-11-01T12:56:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34930\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34930\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34930\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kotlin Coding Test Course, DNA Password\"}]},{\"@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, DNA Password - \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\/34930\/","og_locale":"ko_KR","og_type":"article","og_title":"Kotlin Coding Test Course, DNA Password - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Coding tests play an important role in the hiring process of software developers, with many companies devising various problems to evaluate candidates&#8217; algorithm problem-solving skills. In this chapter, we will take a closer look at how to solve the &#8216;DNA Password&#8217; problem using Kotlin. Problem Description The DNA Password problem has the following conditions: A &hellip; \ub354 \ubcf4\uae30 \"Kotlin Coding Test Course, DNA Password\"","og_url":"https:\/\/atmokpo.com\/w\/34930\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:33:45+00:00","article_modified_time":"2024-11-01T12:56:16+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\/34930\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34930\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Kotlin Coding Test Course, DNA Password","datePublished":"2024-11-01T09:33:45+00:00","dateModified":"2024-11-01T12:56:16+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34930\/"},"wordCount":473,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Kotlin coding test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34930\/","url":"https:\/\/atmokpo.com\/w\/34930\/","name":"Kotlin Coding Test Course, DNA Password - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:33:45+00:00","dateModified":"2024-11-01T12:56:16+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34930\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34930\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34930\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Kotlin Coding Test Course, DNA Password"}]},{"@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\/34930","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=34930"}],"version-history":[{"count":2,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34930\/revisions"}],"predecessor-version":[{"id":38121,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34930\/revisions\/38121"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}