{"id":34300,"date":"2024-11-01T09:26:33","date_gmt":"2024-11-01T09:26:33","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34300"},"modified":"2024-11-01T10:57:48","modified_gmt":"2024-11-01T10:57:48","slug":"c-coding-test-course-understanding-combinations-2","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34300\/","title":{"rendered":"C++ Coding Test Course, Understanding Combinations"},"content":{"rendered":"<p><body><\/p>\n<p>Hello, everyone! In this session, we will talk about preparing for coding tests using C++. Specifically, we will solve a problem to deepen our understanding of the Combination algorithm. Combinations are a very useful algorithm for finding ways to select items that meet specific conditions.<\/p>\n<h2>Definition of Combination<\/h2>\n<p>Combination refers to the way of selecting a specific number of elements from a given set. For example, when selecting 2 elements from the set {A, B, C}, the possible selections are {A, B}, {A, C}, and {B, C}. The important point here is that the order of the selected elements does not matter. This is a significant distinction from permutations.<\/p>\n<h2>Problem Description<\/h2>\n<h3>Problem: Sum of Combinations<\/h3>\n<p>Given an integer array <code>nums<\/code> and an integer <code>target<\/code>, find and output all combinations that can sum up to <code>target<\/code>. Each number in the combination can be used multiple times, and combinations with the same numbers should not be included multiple times.<\/p>\n<h3>Input Example<\/h3>\n<pre><code>nums = [2, 3, 6, 7]\ntarget = 7<\/code><\/pre>\n<h3>Output Example<\/h3>\n<pre><code>[[2, 2, 3], [7]]<\/code><\/pre>\n<h2>Problem Solving Process<\/h2>\n<h3>1. Understanding the Problem<\/h3>\n<p>To solve the problem, we will use the Backtracking algorithm. Backtracking explores possible choices during the problem-solving process and, if a choice is invalid or does not lead to an optimal solution, goes back to a previous step to try another choice.<\/p>\n<h3>2. Algorithm Design<\/h3>\n<p>The algorithm for this problem consists of the following steps.<\/p>\n<ol>\n<li>Add the current combination to the array.<\/li>\n<li>If the sum of the combination equals <code>target<\/code>, add that combination to the result array.<\/li>\n<li>If the current combination exceeds <code>target<\/code>, terminate the recursive call.<\/li>\n<li>Add possible numbers to the combination and make a recursive call to include the same number.<\/li>\n<li>Finally, remove the last selected number to return to the previous state.<\/li>\n<\/ol>\n<h3>3. Implementing the Code<\/h3>\n<p>Now, let&#8217;s look at the code implemented in C++.<\/p>\n<pre><code>#include &lt;iostream&gt;\n#include &lt;vector&gt;\nusing namespace std;\n\nvoid backtrack(vector&lt;int&gt; &amp;combination, vector&lt;vector&lt;int&gt;&gt; &amp;result, vector&lt;int&gt; &amp;nums, int target, int start) {\n    if (target == 0) {\n        result.push_back(combination);\n        return;\n    }\n    \n    for (int i = start; i &lt; nums.size(); i++) {\n        if (nums[i] &gt; target) continue; \/\/ Skip if the current number exceeds target\n        combination.push_back(nums[i]); \/\/ Add number to the combination\n        backtrack(combination, result, nums, target - nums[i], i); \/\/ Recursive call\n        combination.pop_back(); \/\/ Remove the last number to backtrack\n    }\n}\n\nvector&lt;vector&lt;int&gt;&gt; combinationSum(vector&lt;int&gt; &amp;nums, int target) {\n    vector&lt;vector&lt;int&gt;&gt; result;\n    vector&lt;int&gt; combination;\n    backtrack(combination, result, nums, target, 0);\n    return result;\n}\n\nint main() {\n    vector&lt;int&gt; nums = {2, 3, 6, 7};\n    int target = 7;\n    vector&lt;vector&lt;int&gt;&gt; result = combinationSum(nums, target);\n    \n    for (const auto &amp;comb : result) {\n        cout &lt;&lt; \"[ \";\n        for (int num : comb) {\n            cout &lt;&lt; num &lt;&lt; \" \";\n        }\n        cout &lt;&lt; \"]\" &lt;&lt; endl;\n    }\n    \n    return 0;\n}<\/code><\/pre>\n<h2>4. Explanation of the Code<\/h2>\n<p>The above code is a function called <code>combinationSum<\/code> that takes a given array of numbers and a target value, returning an array of all possible combinations. Inside the function, a recursive function called <code>backtrack<\/code> is called to generate combinations.<\/p>\n<ul>\n<li><strong>backtrack function:<\/strong> This function stores the current combination in an array, updates the target value, and recursively explores new combinations.<\/li>\n<li><strong>Conditional Statement:<\/strong> When the target is 0, the current combination is added to the result array, and if the target is less than the current number, the exploration is terminated.<\/li>\n<li><strong>Adding Combinations:<\/strong> After adding the current number to the combination, the target value is reduced, and a recursive call is made.<\/li>\n<li><strong>Removing Combinations:<\/strong> To backtrack, the last number is removed from the combination to return to the previous state.<\/li>\n<\/ul>\n<h2>5. Time Complexity Analysis<\/h2>\n<p>The time complexity of this problem is proportional to the number of combinations in the worst case. Therefore, it can be quite inefficient depending on the input size and number of possibilities. However, such algorithms can be very useful in many situations, so it is important to understand and practice them well.<\/p>\n<h2>6. Conclusion<\/h2>\n<p>Through this lecture, we learned to understand and solve combination problems in C++. Since combination problems can be utilized in various situations, it is important to understand the given context well and choose the appropriate algorithm. I hope you can further enhance your coding skills through various practice problems.<\/p>\n<h2>Additional Examples and Exercises<\/h2>\n<p>Try solving the additional examples below to practice more diverse combination problems:<\/p>\n<ul>\n<li><strong>Example 1:<\/strong> What are the possible combinations for <code>nums = [1, 2, 3]<\/code> and <code>target = 4<\/code>?<\/li>\n<li><strong>Example 2:<\/strong> What are the possible combinations for <code>nums = [3, 5, 7]<\/code> and <code>target = 8<\/code>?<\/li>\n<\/ul>\n<p>It is important to continuously practice to enhance your coding skills. I hope you gain experience by solving various problems!<\/p>\n<h2>References<\/h2>\n<p>If you want more detailed algorithms and in-depth content about C++, please refer to the materials below:<\/p>\n<ul>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/\">C++ Reference<\/a><\/li>\n<li><a href=\"https:\/\/leetcode.com\/\">LeetCode<\/a><\/li>\n<li><a href=\"https:\/\/www.geeksforgeeks.org\/\">GeeksforGeeks<\/a><\/li>\n<\/ul>\n<p>We wish you the best in your coding studies!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello, everyone! In this session, we will talk about preparing for coding tests using C++. Specifically, we will solve a problem to deepen our understanding of the Combination algorithm. Combinations are a very useful algorithm for finding ways to select items that meet specific conditions. Definition of Combination Combination refers to the way of selecting &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34300\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;C++ Coding Test Course, Understanding Combinations&#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-34300","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, Understanding Combinations - \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\/34300\/\" \/>\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, Understanding Combinations - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Hello, everyone! In this session, we will talk about preparing for coding tests using C++. Specifically, we will solve a problem to deepen our understanding of the Combination algorithm. Combinations are a very useful algorithm for finding ways to select items that meet specific conditions. Definition of Combination Combination refers to the way of selecting &hellip; \ub354 \ubcf4\uae30 &quot;C++ Coding Test Course, Understanding Combinations&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34300\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:26:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T10:57:48+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=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/34300\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34300\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"C++ Coding Test Course, Understanding Combinations\",\"datePublished\":\"2024-11-01T09:26:33+00:00\",\"dateModified\":\"2024-11-01T10:57:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34300\/\"},\"wordCount\":611,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"C++ Coding Test Tutorials\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34300\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34300\/\",\"name\":\"C++ Coding Test Course, Understanding Combinations - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:26:33+00:00\",\"dateModified\":\"2024-11-01T10:57:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34300\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34300\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34300\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C++ Coding Test Course, Understanding Combinations\"}]},{\"@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, Understanding Combinations - \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\/34300\/","og_locale":"ko_KR","og_type":"article","og_title":"C++ Coding Test Course, Understanding Combinations - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Hello, everyone! In this session, we will talk about preparing for coding tests using C++. Specifically, we will solve a problem to deepen our understanding of the Combination algorithm. Combinations are a very useful algorithm for finding ways to select items that meet specific conditions. Definition of Combination Combination refers to the way of selecting &hellip; \ub354 \ubcf4\uae30 \"C++ Coding Test Course, Understanding Combinations\"","og_url":"https:\/\/atmokpo.com\/w\/34300\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:26:33+00:00","article_modified_time":"2024-11-01T10:57:48+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":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/34300\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34300\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"C++ Coding Test Course, Understanding Combinations","datePublished":"2024-11-01T09:26:33+00:00","dateModified":"2024-11-01T10:57:48+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34300\/"},"wordCount":611,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["C++ Coding Test Tutorials"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34300\/","url":"https:\/\/atmokpo.com\/w\/34300\/","name":"C++ Coding Test Course, Understanding Combinations - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:26:33+00:00","dateModified":"2024-11-01T10:57:48+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34300\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34300\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34300\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"C++ Coding Test Course, Understanding Combinations"}]},{"@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\/34300","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=34300"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34300\/revisions"}],"predecessor-version":[{"id":34301,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34300\/revisions\/34301"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}