{"id":34566,"date":"2024-11-01T09:29:30","date_gmt":"2024-11-01T09:29:30","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34566"},"modified":"2024-11-01T11:40:41","modified_gmt":"2024-11-01T11:40:41","slug":"javascript-coding-test-course-longest-common-subsequence","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34566\/","title":{"rendered":"JavaScript Coding Test Course, Longest Common Subsequence"},"content":{"rendered":"<p><body><\/p>\n<div class=\"content\">\n<h2>Problem Description<\/h2>\n<p>\n            Given two strings, the problem is to find the Longest Common Subsequence (LCS) of these two strings.<br \/>\n            The longest common subsequence refers to the maximum length of the substring that overlaps while maintaining the order of the two strings.<br \/>\n            For example, if string A is &#8220;ABCBDAB&#8221; and string B is &#8220;BDCAB&#8221;, the longest common subsequence can be &#8220;BDAB&#8221; or &#8220;BCAB&#8221;, etc.\n        <\/p>\n<h2>Input Format<\/h2>\n<p>\n            &#8211; The first line contains the length N of string A and the length M of string B. (1 \u2264 N, M \u2264 1000)<br \/>\n            &#8211; The second line contains string A.<br \/>\n            &#8211; The third line contains string B.\n        <\/p>\n<h2>Output Format<\/h2>\n<p>\n            &#8211; Output the length of the longest common subsequence of the two strings.\n        <\/p>\n<h2>Example<\/h2>\n<pre>\n            Input:\n            7 5\n            ABCBDAB\n            BDCAB\n\n            Output:\n            4\n        <\/pre>\n<h2>Approach to Solve the Problem<\/h2>\n<p>\n            This problem is a typical example of Dynamic Programming.<br \/>\n            To find the LCS, we compare the two strings to find matching characters,<br \/>\n            solving the subproblems at that point to derive the final length.\n        <\/p>\n<h3>Step-by-Step Approach<\/h3>\n<ol>\n<li>\n<strong>Initialize the Dynamic Programming Table:<\/strong><\/p>\n<p>\n                    Create a 2D array DP. DP[i][j] stores the length of the longest common subsequence<br \/>\n                    of the first i characters of string A and the first j characters of string B. The size of the array is (N+1) x (M+1).\n                <\/p>\n<\/li>\n<li>\n<strong>Fill the Table:<\/strong><\/p>\n<p>\n                    If the i-th character of A and the j-th character of B are the same, then DP[i][j] = DP[i-1][j-1] + 1.<br \/>\n                    Otherwise, set DP[i][j] = max(DP[i-1][j], DP[i][j-1]).\n                <\/p>\n<\/li>\n<li>\n<strong>Output the Result:<\/strong><\/p>\n<p>\n                    By reaching DP[N][M], we can return the length of the longest common subsequence.\n                <\/p>\n<\/li>\n<\/ol>\n<h2>JavaScript Code<\/h2>\n<pre><code>\nfunction longestCommonSubsequence(A, B) {\n    const N = A.length;\n    const M = B.length;\n    \n    \/\/ Initialize the DP table\n    const DP = Array.from(Array(N + 1), () =&gt; Array(M + 1).fill(0));\n    \n    \/\/ Fill the DP table\n    for (let i = 1; i &lt;= N; i++) {\n        for (let j = 1; j &lt;= M; j++) {\n            if (A[i - 1] === B[j - 1]) {\n                DP[i][j] = DP[i - 1][j - 1] + 1;\n            } else {\n                DP[i][j] = Math.max(DP[i - 1][j], DP[i][j - 1]);\n            }\n        }\n    }\n    \n    return DP[N][M];\n}\n\n\/\/ Run the input example\nconst A = 'ABCBDAB';\nconst B = 'BDCAB';\nconsole.log(longestCommonSubsequence(A, B)); \/\/ Output: 4\n        <\/code><\/pre>\n<h2>Review and Practice Problems<\/h2>\n<p>\n            If you have fully understood this problem, try to enhance your skills with additional practice problems. Challenge yourself with the following problems:\n        <\/p>\n<ul>\n<li>A problem to find the longest common subsequence among three given strings instead of two.<\/li>\n<li>A problem to find the longest common subsequence without distinguishing between uppercase and lowercase letters.<\/li>\n<li>A problem to output all possible combinations that derive the longest common subsequence.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>\n            The longest common subsequence problem is one of the important concepts in computer science and can be applied to various algorithm problems.<br \/>\n            Solving this problem using Dynamic Programming will help tackle more complex problems. Practice by solving various problems!\n        <\/p>\n<\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem Description Given two strings, the problem is to find the Longest Common Subsequence (LCS) of these two strings. The longest common subsequence refers to the maximum length of the substring that overlaps while maintaining the order of the two strings. For example, if string A is &#8220;ABCBDAB&#8221; and string B is &#8220;BDCAB&#8221;, the longest &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34566\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;JavaScript Coding Test Course, Longest Common Subsequence&#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-34566","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, Longest Common Subsequence - \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\/34566\/\" \/>\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, Longest Common Subsequence - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Problem Description Given two strings, the problem is to find the Longest Common Subsequence (LCS) of these two strings. The longest common subsequence refers to the maximum length of the substring that overlaps while maintaining the order of the two strings. For example, if string A is &#8220;ABCBDAB&#8221; and string B is &#8220;BDCAB&#8221;, the longest &hellip; \ub354 \ubcf4\uae30 &quot;JavaScript Coding Test Course, Longest Common Subsequence&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34566\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:29:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:40:41+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\/34566\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34566\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"JavaScript Coding Test Course, Longest Common Subsequence\",\"datePublished\":\"2024-11-01T09:29:30+00:00\",\"dateModified\":\"2024-11-01T11:40:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34566\/\"},\"wordCount\":374,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Javascript Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34566\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34566\/\",\"name\":\"JavaScript Coding Test Course, Longest Common Subsequence - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:29:30+00:00\",\"dateModified\":\"2024-11-01T11:40:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34566\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34566\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34566\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript Coding Test Course, Longest Common Subsequence\"}]},{\"@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, Longest Common Subsequence - \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\/34566\/","og_locale":"ko_KR","og_type":"article","og_title":"JavaScript Coding Test Course, Longest Common Subsequence - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Problem Description Given two strings, the problem is to find the Longest Common Subsequence (LCS) of these two strings. The longest common subsequence refers to the maximum length of the substring that overlaps while maintaining the order of the two strings. For example, if string A is &#8220;ABCBDAB&#8221; and string B is &#8220;BDCAB&#8221;, the longest &hellip; \ub354 \ubcf4\uae30 \"JavaScript Coding Test Course, Longest Common Subsequence\"","og_url":"https:\/\/atmokpo.com\/w\/34566\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:29:30+00:00","article_modified_time":"2024-11-01T11:40:41+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\/34566\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34566\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"JavaScript Coding Test Course, Longest Common Subsequence","datePublished":"2024-11-01T09:29:30+00:00","dateModified":"2024-11-01T11:40:41+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34566\/"},"wordCount":374,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Javascript Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34566\/","url":"https:\/\/atmokpo.com\/w\/34566\/","name":"JavaScript Coding Test Course, Longest Common Subsequence - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:29:30+00:00","dateModified":"2024-11-01T11:40:41+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34566\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34566\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34566\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"JavaScript Coding Test Course, Longest Common Subsequence"}]},{"@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\/34566","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=34566"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34566\/revisions"}],"predecessor-version":[{"id":34567,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34566\/revisions\/34567"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}