{"id":34650,"date":"2024-11-01T09:30:28","date_gmt":"2024-11-01T09:30:28","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34650"},"modified":"2024-11-01T11:27:09","modified_gmt":"2024-11-01T11:27:09","slug":"swift-coding-test-course-2-n-tile-filling","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34650\/","title":{"rendered":"Swift Coding Test Course, 2 N Tile Filling"},"content":{"rendered":"<div class=\"blog-post\">\n<p>Hello, everyone! In this post, we will discuss one of the coding test problems using Swift called &#8220;2*N Tile Filling.&#8221; This problem is one of the very useful problems for understanding the basics of dynamic programming. Below, I will detail the problem description and the process of solving it.<\/p>\n<h2>Problem Description<\/h2>\n<p>The problem is as follows. We need to find the number of ways to fill a rectangle that is 2 units high and N units wide with tiles of size 2&#215;1 or 1&#215;2. In other words, we need to count the number of ways to completely fill a 2*N rectangle using 2&#215;1 and 1&#215;2 tiles.<\/p>\n<h2>Examples<\/h2>\n<p>Here are examples for a few small values of N.<\/p>\n<ul>\n<li>N=1: 1 (filling with one 1&#215;2 tile)<\/li>\n<li>N=2: 2 (filling with two 2&#215;1 tiles or two 1&#215;2 tiles)<\/li>\n<li>N=3: 3 (filling with a combination of 1&#215;2 and 2&#215;1 tiles)<\/li>\n<li>N=4: 5<\/li>\n<\/ul>\n<h2>Problem Solving Approach<\/h2>\n<p>This problem can be solved using dynamic programming. First, we need to set up the recurrence relation to solve the problem. In this problem, we can consider the following two cases.<\/p>\n<ol>\n<li>If the last column has a 1&#215;2 tile: In this case, the size of the remaining problem is 2*(N-1).<\/li>\n<li>If the last row has a 2&#215;1 tile: In this case, the size of the remaining problem is 2*(N-2).<\/li>\n<\/ol>\n<p>By combining these two cases, we obtain the following recurrence relation.<\/p>\n<p><strong>f(N) = f(N-1) + f(N-2)<\/strong><\/p>\n<p>The initial cases are as follows.<\/p>\n<ul>\n<li><strong>f(1) = 1<\/strong><\/li>\n<li><strong>f(2) = 2<\/strong><\/li>\n<\/ul>\n<h2>Swift Code Implementation<\/h2>\n<p>Now, let&#8217;s implement the recurrence relation in Swift. During the implementation, we will use the memoization technique for efficiency.<\/p>\n<pre><code class=\"language-swift\">\n    func tileWays(_ n: Int) -> Int {\n        \/\/ Array for memoization\n        var memo = Array(repeating: 0, count: n + 1)\n\n        \/\/ Setting initial cases\n        memo[1] = 1\n        if n > 1 {\n            memo[2] = 2\n        }\n\n        for i in 3...n {\n            memo[i] = memo[i - 1] + memo[i - 2]\n        }\n        \n        return memo[n]\n    }\n\n    \/\/ Example test\n    let n = 4\n    print(\"The number of ways to fill a height 2 and width \\(n) with tiles: \\(tileWays(n))\")\n    <\/code><\/pre>\n<h2>Code Explanation<\/h2>\n<p>The above code works as follows:<\/p>\n<ol>\n<li>First, it declares a memo array initialized to 0. This array stores the number of ways to fill the tiles for each N.<\/li>\n<li>It sets the initial cases. It sets 1 for N=1 and 2 for N=2.<\/li>\n<li>It iterates from 3 to N, updating the memo array. For each case, it applies the recurrence relation to store values in the memo array.<\/li>\n<li>Finally, it returns memo[n] to provide the answer for N.<\/li>\n<\/ol>\n<h2>Time Complexity<\/h2>\n<p>This algorithm has a time complexity of O(N), which is proportional to N. By using memoization, we avoid redundant calculations and efficiently compute each case only once using the array.<\/p>\n<h2>Conclusion<\/h2>\n<p>In this post, we covered the &#8220;2*N Tile Filling&#8221; problem using Swift. Through understanding the problem and the solving process, we learned the basics of dynamic programming. I encourage you to solve more problems through practice.<\/p>\n<p>In the next post, we will deal with another interesting algorithm problem. Thank you!<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Hello, everyone! In this post, we will discuss one of the coding test problems using Swift called &#8220;2*N Tile Filling.&#8221; This problem is one of the very useful problems for understanding the basics of dynamic programming. Below, I will detail the problem description and the process of solving it. Problem Description The problem is as &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34650\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Swift Coding Test Course, 2 N Tile Filling&#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":[129],"tags":[],"class_list":["post-34650","post","type-post","status-publish","format-standard","hentry","category-swift-coding-test"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Swift Coding Test Course, 2 N Tile Filling - \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\/34650\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Swift Coding Test Course, 2 N Tile Filling - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Hello, everyone! In this post, we will discuss one of the coding test problems using Swift called &#8220;2*N Tile Filling.&#8221; This problem is one of the very useful problems for understanding the basics of dynamic programming. Below, I will detail the problem description and the process of solving it. Problem Description The problem is as &hellip; \ub354 \ubcf4\uae30 &quot;Swift Coding Test Course, 2 N Tile Filling&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34650\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:30:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:27:09+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\/34650\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34650\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Swift Coding Test Course, 2 N Tile Filling\",\"datePublished\":\"2024-11-01T09:30:28+00:00\",\"dateModified\":\"2024-11-01T11:27:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34650\/\"},\"wordCount\":431,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Swift Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34650\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34650\/\",\"name\":\"Swift Coding Test Course, 2 N Tile Filling - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:30:28+00:00\",\"dateModified\":\"2024-11-01T11:27:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34650\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34650\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34650\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Swift Coding Test Course, 2 N Tile Filling\"}]},{\"@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":"Swift Coding Test Course, 2 N Tile Filling - \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\/34650\/","og_locale":"ko_KR","og_type":"article","og_title":"Swift Coding Test Course, 2 N Tile Filling - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Hello, everyone! In this post, we will discuss one of the coding test problems using Swift called &#8220;2*N Tile Filling.&#8221; This problem is one of the very useful problems for understanding the basics of dynamic programming. Below, I will detail the problem description and the process of solving it. Problem Description The problem is as &hellip; \ub354 \ubcf4\uae30 \"Swift Coding Test Course, 2 N Tile Filling\"","og_url":"https:\/\/atmokpo.com\/w\/34650\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:30:28+00:00","article_modified_time":"2024-11-01T11:27:09+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\/34650\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34650\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Swift Coding Test Course, 2 N Tile Filling","datePublished":"2024-11-01T09:30:28+00:00","dateModified":"2024-11-01T11:27:09+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34650\/"},"wordCount":431,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Swift Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34650\/","url":"https:\/\/atmokpo.com\/w\/34650\/","name":"Swift Coding Test Course, 2 N Tile Filling - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:30:28+00:00","dateModified":"2024-11-01T11:27:09+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34650\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34650\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34650\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Swift Coding Test Course, 2 N Tile Filling"}]},{"@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\/34650","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=34650"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34650\/revisions"}],"predecessor-version":[{"id":34651,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34650\/revisions\/34651"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}