{"id":34786,"date":"2024-11-01T09:31:59","date_gmt":"2024-11-01T09:31:59","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=34786"},"modified":"2024-11-01T11:26:33","modified_gmt":"2024-11-01T11:26:33","slug":"swift-coding-test-course-sliding-window","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/34786\/","title":{"rendered":"Swift Coding Test Course, Sliding Window"},"content":{"rendered":"<p><body><\/p>\n<p>In this lecture, we will solve actual coding test problems using the sliding window technique. The sliding window is an algorithmic technique for efficiently handling subsets of consecutive elements within an array or list, particularly useful when dealing with sums, maximums, and minimums of intervals.<\/p>\n<h2>Problem: Longest Substring<\/h2>\n<p>We will address the problem of finding the length of the longest substring that contains only two distinct characters from a given string.<\/p>\n<h3>Problem Description<\/h3>\n<pre>\nInput: String s\nOutput: Length of the longest substring containing two distinct characters\n<\/pre>\n<h3>Example<\/h3>\n<pre>\nInput: \"abcabcbb\"\nOutput: 3\nExplanation: The longest substring is \"abc,\" which does not contain two distinct characters, so \"bca\" or \"cab\" is the longest substring.\n<\/pre>\n<h3>Problem Approach<\/h3>\n<p>To solve this problem, we will use the sliding window technique. The sliding window is a technique that uses two pointers to dynamically adjust the range that satisfies specific conditions.<\/p>\n<h3>Step-by-Step Approach<\/h3>\n<h4>Step 1: Initialize Function<\/h4>\n<p>First, we initialize a variable to store the length of the string and the result. We set up pointers to represent the start and end of the sliding window.<\/p>\n<pre>\nlet s = \"abcabcbb\"\nvar left = 0\nvar right = 0\nvar maxLength = 0\nvar charFrequency = [Character: Int]()\n<\/pre>\n<h4>Step 2: Extend the Window<\/h4>\n<p>We move the right pointer one position at a time and record the frequency of the current character. This allows us to know the frequency of characters included in the current window.<\/p>\n<pre>\nwhile right < s.count {\n    let currentChar = s[right]\n    charFrequency[currentChar, default: 0] += 1\n    right += 1\n<\/pre>\n<h4>Step 3: Check Conditions and Shrink the Window<\/h4>\n<p>If the number of characters in the string exceeds two, we move the left pointer to adjust the character count. We repeat this process and calculate the window size to update the maximum length whenever specific conditions are satisfied.<\/p>\n<pre>\nwhile charFrequency.count > 2 {\n    let leftChar = s[left]\n    charFrequency[leftChar]! -= 1\n    if charFrequency[leftChar] == 0 {\n        charFrequency.removeValue(forKey: leftChar)\n    }\n    left += 1\n}\nmaxLength = max(maxLength, right - left)\n<\/pre>\n<h4>Step 4: Complete the Function<\/h4>\n<p>The completed code through all these steps is as follows:<\/p>\n<pre>\nfunc lengthOfLongestSubstringTwoDistinct(_ s: String) -> Int {\n    var left = 0, right = 0, maxLength = 0\n    var charFrequency = [Character: Int]()\n\n    let charArray = Array(s)\n\n    while right < charArray.count {\n        let currentChar = charArray[right]\n        charFrequency[currentChar, default: 0] += 1\n        right += 1\n\n        while charFrequency.count > 2 {\n            let leftChar = charArray[left]\n            charFrequency[leftChar]! -= 1\n            if charFrequency[leftChar] == 0 {\n                charFrequency.removeValue(forKey: leftChar)\n            }\n            left += 1\n        }\n        maxLength = max(maxLength, right - left)\n    }\n    return maxLength\n}\n<\/pre>\n<h3>Step 5: Time Complexity Analysis<\/h3>\n<p>The time complexity of this algorithm is O(n). It is efficient because each character is visited only once. The space complexity is O(1) since the maximum character set is fixed.<\/p>\n<h3>Conclusion<\/h3>\n<p>The sliding window technique is very useful when exploring consecutive parts that satisfy specific conditions. This method can efficiently solve many algorithm problems. Try running the code below in Swift!<\/p>\n<pre>\nlet testString = \"abcabcbb\"\nlet result = lengthOfLongestSubstringTwoDistinct(testString)\nprint(result)  \/\/ Output: 3\n<\/pre>\n<p>Practice solving more algorithm problems with the sliding window technique learned in this lecture to enhance your skills!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this lecture, we will solve actual coding test problems using the sliding window technique. The sliding window is an algorithmic technique for efficiently handling subsets of consecutive elements within an array or list, particularly useful when dealing with sums, maximums, and minimums of intervals. Problem: Longest Substring We will address the problem of finding &hellip; <a href=\"https:\/\/atmokpo.com\/w\/34786\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Swift Coding Test Course, Sliding Window&#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-34786","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, Sliding Window - \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\/34786\/\" \/>\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, Sliding Window - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"In this lecture, we will solve actual coding test problems using the sliding window technique. The sliding window is an algorithmic technique for efficiently handling subsets of consecutive elements within an array or list, particularly useful when dealing with sums, maximums, and minimums of intervals. Problem: Longest Substring We will address the problem of finding &hellip; \ub354 \ubcf4\uae30 &quot;Swift Coding Test Course, Sliding Window&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/34786\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:31:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:26:33+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\/34786\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34786\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Swift Coding Test Course, Sliding Window\",\"datePublished\":\"2024-11-01T09:31:59+00:00\",\"dateModified\":\"2024-11-01T11:26:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34786\/\"},\"wordCount\":326,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Swift Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/34786\/\",\"url\":\"https:\/\/atmokpo.com\/w\/34786\/\",\"name\":\"Swift Coding Test Course, Sliding Window - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:31:59+00:00\",\"dateModified\":\"2024-11-01T11:26:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/34786\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/34786\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/34786\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Swift Coding Test Course, Sliding Window\"}]},{\"@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, Sliding Window - \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\/34786\/","og_locale":"ko_KR","og_type":"article","og_title":"Swift Coding Test Course, Sliding Window - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"In this lecture, we will solve actual coding test problems using the sliding window technique. The sliding window is an algorithmic technique for efficiently handling subsets of consecutive elements within an array or list, particularly useful when dealing with sums, maximums, and minimums of intervals. Problem: Longest Substring We will address the problem of finding &hellip; \ub354 \ubcf4\uae30 \"Swift Coding Test Course, Sliding Window\"","og_url":"https:\/\/atmokpo.com\/w\/34786\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:31:59+00:00","article_modified_time":"2024-11-01T11:26:33+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\/34786\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/34786\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Swift Coding Test Course, Sliding Window","datePublished":"2024-11-01T09:31:59+00:00","dateModified":"2024-11-01T11:26:33+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/34786\/"},"wordCount":326,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Swift Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/34786\/","url":"https:\/\/atmokpo.com\/w\/34786\/","name":"Swift Coding Test Course, Sliding Window - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:31:59+00:00","dateModified":"2024-11-01T11:26:33+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/34786\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/34786\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/34786\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Swift Coding Test Course, Sliding Window"}]},{"@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\/34786","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=34786"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34786\/revisions"}],"predecessor-version":[{"id":34787,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/34786\/revisions\/34787"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=34786"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=34786"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=34786"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}