{"id":33942,"date":"2024-11-01T09:22:13","date_gmt":"2024-11-01T09:22:13","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33942"},"modified":"2024-11-01T10:54:58","modified_gmt":"2024-11-01T10:54:58","slug":"c-coding-test-course-finding-the-longest-common-subsequence","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33942\/","title":{"rendered":"C# Coding Test Course, Finding the Longest Common Subsequence"},"content":{"rendered":"<p><body><\/p>\n<h2>Problem Description<\/h2>\n<p>Given two strings A and B, the task is to find the Longest Common Subsequence (LCS) of these strings. A subsequence is a sequence derived from another sequence where the order of characters is preserved, allowing for deletion. In other words, a subsequence of A must exist in B.<\/p>\n<p>For example, if string A is &#8220;ABCBDAB&#8221; and B is &#8220;BDCAB&#8221;, then the longest common subsequence is &#8220;BCAB&#8221;. This LCS problem requires efficient algorithms across various fields.<\/p>\n<h2>Problem Input<\/h2>\n<p>The lengths N and M of the two strings A and B (1 \u2264 N, M \u2264 1000) and the strings A and B are provided.<\/p>\n<h2>Problem Output<\/h2>\n<p>Output the length of the longest common subsequence.<\/p>\n<h2>Problem Solving Process<\/h2>\n<h3>1. Understanding Dynamic Programming<\/h3>\n<p>This problem can be solved using Dynamic Programming (DP). DP is a technique to improve efficiency by breaking down complex problems into smaller subproblems. Here, a DP array is used to store and calculate the LCS lengths between each pair of characters.<\/p>\n<h3>2. Initializing the DP Array<\/h3>\n<p>First, initialize a two-dimensional DP array based on the lengths of the strings A and B. DP[i][j] represents the length of the longest common subsequence of the first i characters of A and the first j characters of B.<\/p>\n<pre><code>\n    int[,] dp = new int[N + 1, M + 1];\n    <\/code><\/pre>\n<h3>3. DP State Transition<\/h3>\n<p>The DP rules are as follows:<\/p>\n<ul>\n<li>If the i-th character of A and the j-th character of B are the same: <code>dp[i][j] = dp[i - 1][j - 1] + 1<\/code><\/li>\n<li>If the i-th character of A and the j-th character of B are different: <code>dp[i][j] = Math.Max(dp[i - 1][j], dp[i][j - 1])<\/code><\/li>\n<\/ul>\n<h3>4. Final Result<\/h3>\n<p>After populating the DP array, <code>dp[N][M]<\/code> will contain the length of the longest common subsequence.<\/p>\n<h2>Code Implementation<\/h2>\n<pre><code>\n    using System;\n\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            string A = \"ABCBDAB\";\n            string B = \"BDCAB\";\n            int N = A.Length;\n            int M = B.Length;\n\n            int[,] dp = new int[N + 1, M + 1];\n\n            for (int i = 1; i <= N; i++)\n            {\n                for (int j = 1; j <= M; j++)\n                {\n                    if (A[i - 1] == B[j - 1])\n                    {\n                        dp[i, j] = dp[i - 1, j - 1] + 1;\n                    }\n                    else\n                    {\n                        dp[i, j] = Math.Max(dp[i - 1, j], dp[i, j - 1]);\n                    }\n                }\n            }\n\n            Console.WriteLine(\"Length of the longest common subsequence: \" + dp[N, M]);\n        }\n    }\n    <\/code><\/pre>\n<h2>Test Cases<\/h2>\n<h3>Example Input<\/h3>\n<pre><code>\n    A: ABCBDAB\n    B: BDCAB\n    <\/code><\/pre>\n<h3>Example Output<\/h3>\n<pre><code>\n    Length of the longest common subsequence: 4\n    <\/code><\/pre>\n<h2>Time Complexity Analysis<\/h2>\n<p>The time complexity of this dynamic programming algorithm is O(N * M), and the space complexity is also O(N * M). This ensures satisfactory performance even when the lengths of the two strings are 1000.<\/p>\n<h2>Conclusion<\/h2>\n<p>The Longest Common Subsequence (LCS) problem is a key problem that illustrates how to determine relationships in various fields of computer science. It has been confirmed that it can be solved efficiently using dynamic programming. This method frequently appears in coding tests, so it is important to understand it well and practice.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem Description Given two strings A and B, the task is to find the Longest Common Subsequence (LCS) of these strings. A subsequence is a sequence derived from another sequence where the order of characters is preserved, allowing for deletion. In other words, a subsequence of A must exist in B. For example, if string &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33942\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;C# Coding Test Course, Finding the 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":[90],"tags":[],"class_list":["post-33942","post","type-post","status-publish","format-standard","hentry","category-c-coding-test-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C# Coding Test Course, Finding the 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\/33942\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C# Coding Test Course, Finding the Longest Common Subsequence - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Problem Description Given two strings A and B, the task is to find the Longest Common Subsequence (LCS) of these strings. A subsequence is a sequence derived from another sequence where the order of characters is preserved, allowing for deletion. In other words, a subsequence of A must exist in B. For example, if string &hellip; \ub354 \ubcf4\uae30 &quot;C# Coding Test Course, Finding the Longest Common Subsequence&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33942\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:22:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T10:54:58+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\/33942\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33942\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"C# Coding Test Course, Finding the Longest Common Subsequence\",\"datePublished\":\"2024-11-01T09:22:13+00:00\",\"dateModified\":\"2024-11-01T10:54:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33942\/\"},\"wordCount\":366,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"C# Coding Test Tutorials\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33942\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33942\/\",\"name\":\"C# Coding Test Course, Finding the Longest Common Subsequence - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:22:13+00:00\",\"dateModified\":\"2024-11-01T10:54:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33942\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33942\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33942\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C# Coding Test Course, Finding the 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":"C# Coding Test Course, Finding the 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\/33942\/","og_locale":"ko_KR","og_type":"article","og_title":"C# Coding Test Course, Finding the Longest Common Subsequence - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Problem Description Given two strings A and B, the task is to find the Longest Common Subsequence (LCS) of these strings. A subsequence is a sequence derived from another sequence where the order of characters is preserved, allowing for deletion. In other words, a subsequence of A must exist in B. For example, if string &hellip; \ub354 \ubcf4\uae30 \"C# Coding Test Course, Finding the Longest Common Subsequence\"","og_url":"https:\/\/atmokpo.com\/w\/33942\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:22:13+00:00","article_modified_time":"2024-11-01T10:54:58+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\/33942\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33942\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"C# Coding Test Course, Finding the Longest Common Subsequence","datePublished":"2024-11-01T09:22:13+00:00","dateModified":"2024-11-01T10:54:58+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33942\/"},"wordCount":366,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["C# Coding Test Tutorials"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33942\/","url":"https:\/\/atmokpo.com\/w\/33942\/","name":"C# Coding Test Course, Finding the Longest Common Subsequence - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:22:13+00:00","dateModified":"2024-11-01T10:54:58+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33942\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33942\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33942\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"C# Coding Test Course, Finding the 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\/33942","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=33942"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33942\/revisions"}],"predecessor-version":[{"id":33943,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33942\/revisions\/33943"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}