{"id":34372,"date":"2024-11-01T09:27:24","date_gmt":"2024-11-01T09:27:24","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34372"},"modified":"2024-11-01T10:57:29","modified_gmt":"2024-11-01T10:57:29","slug":"c-coding-test-course-hacking-efficiently-2","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34372\/","title":{"rendered":"C++ Coding Test Course, Hacking Efficiently"},"content":{"rendered":"<p><body><\/p>\n<div class=\"container\">\n<h2>Problem Description<\/h2>\n<p>Given an integer array, write a program to determine whether it can be divided into two subsets with equal sums.<\/p>\n<p>This problem is known as the &#8216;Subset Sum Problem&#8217;. It can be solved using Dynamic Programming.<\/p>\n<h2>Input Format<\/h2>\n<ul>\n<li>The first line contains the size of the array N (1 \u2264 N \u2264 20).<\/li>\n<li>The second line contains N integers of the array (each integer is between 0 and 10000).<\/li>\n<\/ul>\n<h2>Output Format<\/h2>\n<p>If it is possible to partition the subsets, print &#8220;YES&#8221;; otherwise, print &#8220;NO&#8221;.<\/p>\n<h2>Example Input<\/h2>\n<pre>\n        4\n        1 5 11 5\n        <\/pre>\n<h2>Example Output<\/h2>\n<pre>\n        YES\n        <\/pre>\n<h2>Approach to Solve the Problem<\/h2>\n<p>To solve this problem, you should follow these steps:<\/p>\n<ol>\n<li>Calculate the sum of the input array.<\/li>\n<li>If the sum is odd, it is impossible for the two subsets to have equal sums, so return &#8220;NO&#8221;.<\/li>\n<li>If the sum is even, set the target value to half of the sum and use dynamic programming to determine if it can be achieved.<\/li>\n<li>Set up a state table and check if each number can be used to form the target value.<\/li>\n<\/ol>\n<h2>C++ Code<\/h2>\n<pre>\n#include &lt;iostream&gt;\n#include &lt;vector&gt;\nusing namespace std;\n\nbool canPartition(vector&lt;int&gt;&amp; arr) {\n    int sum = 0;\n    for (int num : arr) sum += num;\n    if (sum % 2 != 0) return false;\n\n    int target = sum \/ 2;\n    vector&lt;bool&gt; dp(target + 1, false);\n    dp[0] = true;\n\n    for (int num : arr) {\n        for (int j = target; j &gt;= num; j--) {\n            dp[j] = dp[j] || dp[j - num];\n        }\n    }\n\n    return dp[target];\n}\n\nint main() {\n    int N;\n    cin &gt;&gt; N;\n    vector&lt;int&gt; arr(N);\n    for (int i = 0; i &lt; N; i++) {\n        cin &gt;&gt; arr[i];\n    }\n    \n    cout &lt;&lt; (canPartition(arr) ? \"YES\" : \"NO\") &lt;&lt; endl;\n    return 0;\n}\n        <\/pre>\n<h2>Code Explanation<\/h2>\n<p>The above code works as follows:<\/p>\n<ol>\n<li>First, it calculates the total sum of the number array.<\/li>\n<li>It checks if the sum is odd. If it is odd, it returns &#8220;NO&#8221;.<\/li>\n<li>If the sum is even, it sets the target value to half of the sum and initializes the dynamic programming array.<\/li>\n<li>By iterating through each number, it checks if it can create the target value.<\/li>\n<li>Ultimately, it prints &#8220;YES&#8221; if the target value can be created; otherwise, it prints &#8220;NO&#8221;.<\/li>\n<\/ol>\n<h2>Time Complexity<\/h2>\n<p>The time complexity of this algorithm is O(N * target), where N is the number of input numbers and target is half of the total sum of the input array. This determines the number of operations that can be used to create different subsets.<\/p>\n<h2>Conclusion<\/h2>\n<p>This concludes the code and explanation for the Subset Sum Problem. Such algorithmic problems often appear in coding tests, so it is good to practice them frequently. In the next lecture, we will cover more complex problems and their solutions.<\/p>\n<h2>Questions and Feedback<\/h2>\n<p>If you have any questions about the code you wrote or any parts you find difficult to understand, feel free to leave a comment!<\/p>\n<\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Problem Description Given an integer array, write a program to determine whether it can be divided into two subsets with equal sums. This problem is known as the &#8216;Subset Sum Problem&#8217;. It can be solved using Dynamic Programming. Input Format The first line contains the size of the array N (1 \u2264 N \u2264 20). &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34372\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;C++ Coding Test Course, Hacking Efficiently&#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":[111],"tags":[],"class_list":["post-34372","post","type-post","status-publish","format-standard","hentry","category-c-coding-test-tutorials-2"],"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, Hacking Efficiently - \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\/34372\/\" \/>\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, Hacking Efficiently - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Problem Description Given an integer array, write a program to determine whether it can be divided into two subsets with equal sums. This problem is known as the &#8216;Subset Sum Problem&#8217;. It can be solved using Dynamic Programming. Input Format The first line contains the size of the array N (1 \u2264 N \u2264 20). &hellip; \ub354 \ubcf4\uae30 &quot;C++ Coding Test Course, Hacking Efficiently&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34372\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:27:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T10:57:29+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\/34372\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34372\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"C++ Coding Test Course, Hacking Efficiently\",\"datePublished\":\"2024-11-01T09:27:24+00:00\",\"dateModified\":\"2024-11-01T10:57:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34372\/\"},\"wordCount\":371,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"C++ Coding Test Tutorials\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34372\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34372\/\",\"name\":\"C++ Coding Test Course, Hacking Efficiently - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:27:24+00:00\",\"dateModified\":\"2024-11-01T10:57:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34372\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34372\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34372\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C++ Coding Test Course, Hacking Efficiently\"}]},{\"@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, Hacking Efficiently - \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\/34372\/","og_locale":"ko_KR","og_type":"article","og_title":"C++ Coding Test Course, Hacking Efficiently - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Problem Description Given an integer array, write a program to determine whether it can be divided into two subsets with equal sums. This problem is known as the &#8216;Subset Sum Problem&#8217;. It can be solved using Dynamic Programming. Input Format The first line contains the size of the array N (1 \u2264 N \u2264 20). &hellip; \ub354 \ubcf4\uae30 \"C++ Coding Test Course, Hacking Efficiently\"","og_url":"https:\/\/atmokpo.com\/w\/34372\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:27:24+00:00","article_modified_time":"2024-11-01T10:57:29+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\/34372\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34372\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"C++ Coding Test Course, Hacking Efficiently","datePublished":"2024-11-01T09:27:24+00:00","dateModified":"2024-11-01T10:57:29+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34372\/"},"wordCount":371,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["C++ Coding Test Tutorials"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34372\/","url":"https:\/\/atmokpo.com\/w\/34372\/","name":"C++ Coding Test Course, Hacking Efficiently - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:27:24+00:00","dateModified":"2024-11-01T10:57:29+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34372\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34372\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34372\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"C++ Coding Test Course, Hacking Efficiently"}]},{"@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\/34372","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=34372"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34372\/revisions"}],"predecessor-version":[{"id":34373,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34372\/revisions\/34373"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}