{"id":34626,"date":"2024-11-01T09:30:16","date_gmt":"2024-11-01T09:30:16","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34626"},"modified":"2024-11-01T11:40:27","modified_gmt":"2024-11-01T11:40:27","slug":"javascript-coding-test-course-dna-password","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34626\/","title":{"rendered":"JavaScript Coding Test Course, DNA Password"},"content":{"rendered":"<p><body><\/p>\n<p>Coding tests are an important means of validating programming skills, and companies use them to assess the candidate&#8217;s algorithmic thinking and problem-solving abilities. In this course, we will closely examine the process of solving the <strong>DNA Password<\/strong> problem using JavaScript.<\/p>\n<h2>Problem Description<\/h2>\n<p>The DNA Password problem is as follows:<\/p>\n<blockquote class=\"example\"><p>\n<strong>Problem:<\/strong> Given a DNA string of length N, find the number of all possible substrings from the DNA string that can be a password. The conditions for a password are that it must contain exactly 1 or 2 of the characters &#8216;A&#8217;, &#8216;C&#8217;, &#8216;G&#8217;, &#8216;T&#8217;, and must contain at least 1.\n<\/p><\/blockquote>\n<h2>Example Input and Output<\/h2>\n<pre><code>\nInput: \"ACGTACGTA\"\nOutput: 16\n<\/code><\/pre>\n<h2>Problem Solving Process<\/h2>\n<p>To solve this problem, we will follow these steps:<\/p>\n<h3>Step 1: Problem Analysis<\/h3>\n<p>We need to find all substrings from the given DNA string that satisfy the password conditions. A password must contain either 1 or 2 of the characters &#8216;A&#8217;, &#8216;C&#8217;, &#8216;G&#8217;, &#8216;T&#8217;. Therefore, we need to consider cases for substrings that include each character.<\/p>\n<h3>Step 2: Generate Substrings<\/h3>\n<p>To generate all substrings of the DNA string, we can use two pointers to define the startIndex and endIndex. This process generates O(N^2) cases.<\/p>\n<h3>Step 3: Check Password Conditions<\/h3>\n<p>For each substring, we need to check the counts of &#8216;A&#8217;, &#8216;C&#8217;, &#8216;G&#8217;, &#8216;T&#8217;. We can use regular expressions or a counting array for this.<\/p>\n<h3>Step 4: Implement Code<\/h3>\n<p>Now, let&#8217;s implement the JavaScript code to solve the problem:<\/p>\n<pre><code>\nfunction countDNAPasswords(dna) {\n    const n = dna.length;\n    let count = 0;\n\n    \/\/ Generate all substrings\n    for (let start = 0; start &lt; n; start++) {\n        const charCount = { 'A': 0, 'C': 0, 'G': 0, 'T': 0 };\n        \n        for (let end = start; end &lt; n; end++) {\n            \/\/ Current character count\n            const char = dna[end];\n            if (charCount[char] !== undefined) {\n                charCount[char]++;\n            }\n\n            \/\/ Check password conditions\n            const uniqueCount = Object.values(charCount).filter(x =&gt; x &gt; 0).length;\n            if (uniqueCount &gt;= 1 &amp;&amp; uniqueCount &lt;= 2) {\n                count++;\n            }\n        }\n    }\n\n    return count;\n}\n\n\/\/ Example usage\nconst dnaString = \"ACGTACGTA\";\nconsole.log(countDNAPasswords(dnaString)); \/\/ Output: 16\n<\/code><\/pre>\n<h2>Code Explanation<\/h2>\n<p>The main functions of the code written above are as follows:<\/p>\n<ul>\n<li>The <code>countDNAPasswords<\/code> function takes the DNA string as input and calculates the number of passwords.<\/li>\n<li>Two nested <code>for<\/code> loops are used to generate all substrings.<\/li>\n<li>For each substring, the <code>charCount<\/code> object is used to count the occurrences of &#8216;A&#8217;, &#8216;C&#8217;, &#8216;G&#8217;, &#8216;T&#8217;, and check the password conditions.<\/li>\n<li>It counts the cases that meet the conditions.<\/li>\n<\/ul>\n<h2>Time Complexity Analysis<\/h2>\n<p>The time complexity of this algorithm is O(N^2). It generates all substrings using two nested loops. However, this method may lead to performance issues as the length of the string increases. Therefore, it is worth considering optimized methods or applying other algorithms.<\/p>\n<h2>Conclusion<\/h2>\n<p>In this course, we learned how to solve the DNA Password problem using JavaScript. We started from an algorithmic problem, implemented the code, and examined the process of deriving results in detail. Such problems frequently appear in coding tests, so consistent practice is necessary.<\/p>\n<p>Through this practice, you can repeatedly improve your problem-solving skills, so it is recommended to tackle various problems. Thank you!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Coding tests are an important means of validating programming skills, and companies use them to assess the candidate&#8217;s algorithmic thinking and problem-solving abilities. In this course, we will closely examine the process of solving the DNA Password problem using JavaScript. Problem Description The DNA Password problem is as follows: Problem: Given a DNA string of &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34626\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;JavaScript 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":[141],"tags":[],"class_list":["post-34626","post","type-post","status-publish","format-standard","hentry","category-javascript-coding-test"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JavaScript 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\/34626\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript Coding Test Course, DNA Password - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Coding tests are an important means of validating programming skills, and companies use them to assess the candidate&#8217;s algorithmic thinking and problem-solving abilities. In this course, we will closely examine the process of solving the DNA Password problem using JavaScript. Problem Description The DNA Password problem is as follows: Problem: Given a DNA string of &hellip; \ub354 \ubcf4\uae30 &quot;JavaScript Coding Test Course, DNA Password&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34626\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:30:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:40:27+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\/34626\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34626\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"JavaScript Coding Test Course, DNA Password\",\"datePublished\":\"2024-11-01T09:30:16+00:00\",\"dateModified\":\"2024-11-01T11:40:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34626\/\"},\"wordCount\":411,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Javascript Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34626\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34626\/\",\"name\":\"JavaScript Coding Test Course, DNA Password - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:30:16+00:00\",\"dateModified\":\"2024-11-01T11:40:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34626\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34626\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34626\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript 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":"JavaScript 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\/34626\/","og_locale":"ko_KR","og_type":"article","og_title":"JavaScript Coding Test Course, DNA Password - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Coding tests are an important means of validating programming skills, and companies use them to assess the candidate&#8217;s algorithmic thinking and problem-solving abilities. In this course, we will closely examine the process of solving the DNA Password problem using JavaScript. Problem Description The DNA Password problem is as follows: Problem: Given a DNA string of &hellip; \ub354 \ubcf4\uae30 \"JavaScript Coding Test Course, DNA Password\"","og_url":"https:\/\/atmokpo.com\/w\/34626\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:30:16+00:00","article_modified_time":"2024-11-01T11:40:27+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\/34626\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34626\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"JavaScript Coding Test Course, DNA Password","datePublished":"2024-11-01T09:30:16+00:00","dateModified":"2024-11-01T11:40:27+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34626\/"},"wordCount":411,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Javascript Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34626\/","url":"https:\/\/atmokpo.com\/w\/34626\/","name":"JavaScript Coding Test Course, DNA Password - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:30:16+00:00","dateModified":"2024-11-01T11:40:27+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34626\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34626\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34626\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"JavaScript 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\/34626","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=34626"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34626\/revisions"}],"predecessor-version":[{"id":34627,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34626\/revisions\/34627"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}