{"id":33606,"date":"2024-11-01T09:18:26","date_gmt":"2024-11-01T09:18:26","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33606"},"modified":"2024-11-01T11:47:26","modified_gmt":"2024-11-01T11:47:26","slug":"python-coding-test-course-depth-first-search","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33606\/","title":{"rendered":"python coding test course, depth-first search"},"content":{"rendered":"<p><body><\/p>\n<article>\n<section>\n<h2>1. Introduction to Depth-First Search (DFS)<\/h2>\n<p>\n                Depth-First Search (DFS) is one of the graph exploration algorithms that explores as deep as possible from a given node and, when there are no more nodes to explore, backtracks to the last visited node to explore other paths. This method is used for various purposes depending on the structure of the graph and is applied in tree traversal, connected component exploration, pathfinding problems, and more.\n            <\/p>\n<p>\n                The operation of DFS is as follows:<\/p>\n<ul>\n<li>Add the starting node to the stack.<\/li>\n<li>Pop a node from the stack and explore it.<\/li>\n<li>Mark the explored node as visited.<\/li>\n<li>Add all unvisited adjacent nodes to the stack.<\/li>\n<li>Repeat the above process while the stack is not empty.<\/li>\n<\/ul>\n<\/section>\n<section>\n<h2>2. Problem Description<\/h2>\n<h3>Problem: Counting the Number of Islands<\/h3>\n<p>\n                In the given 2D array grid, &#8216;1&#8217; represents land, and &#8216;0&#8217; represents water.<br \/>\n                An island is a set of connected lands vertically or horizontally.<br \/>\n                Write a function to count the number of islands.\n            <\/p>\n<pre>\n            Input: \n            grid = [\n                [\"1\",\"1\",\"0\",\"0\",\"0\"],\n                [\"1\",\"1\",\"0\",\"0\",\"0\"],\n                [\"0\",\"0\",\"1\",\"0\",\"0\"],\n                [\"0\",\"0\",\"0\",\"1\",\"1\"]\n            ]\n            Output: 3\n            <\/pre>\n<\/section>\n<section>\n<h2>3. Problem Solving Process<\/h2>\n<h3>3.1. Understanding the Problem<\/h3>\n<p>\n                To solve the problem, we first need to identify the sections of connected land (i.e., islands).<br \/>\n                Each island can be identified using DFS, by traversing the land and also exploring adjacent land,<br \/>\n                thereby confirming all parts of the island.\n            <\/p>\n<h3>3.2. Designing the Data Structure<\/h3>\n<p>\n                We will use a stack to implement DFS.<br \/>\n                To efficiently manage resources, we will use a boolean array to keep track of the visited status of all elements in the 2D array.\n            <\/p>\n<h3>3.3. Implementing DFS<\/h3>\n<pre>\n            def dfs(grid, visited, i, j):\n                # Exit if out of bounds or already visited\n                if i &lt; 0 or i &gt;= len(grid) or j &lt; 0 or j &gt;= len(grid[0]) or visited[i][j] or grid[i][j] == '0':\n                    return\n                # Mark the current position as visited\n                visited[i][j] = True\n                \n                # Explore up, down, left, right\n                dfs(grid, visited, i - 1, j)  # Up\n                dfs(grid, visited, i + 1, j)  # Down\n                dfs(grid, visited, i, j - 1)  # Left\n                dfs(grid, visited, i, j + 1)  # Right\n            <\/pre>\n<h3>3.4. Implementing the Final Function<\/h3>\n<pre>\n            def numIslands(grid):\n                if not grid:\n                    return 0\n                \n                visited = [[False for _ in range(len(grid[0]))] for _ in range(len(grid))]\n                island_count = 0\n                \n                # Explore all nodes in the grid\n                for i in range(len(grid)):\n                    for j in range(len(grid[0])):\n                        if grid[i][j] == '1' and not visited[i][j]:\n                            dfs(grid, visited, i, j)\n                            island_count += 1  # Found a new island\n                            \n                return island_count\n            <\/pre>\n<h3>3.5. Testing the Code<\/h3>\n<pre>\n            grid = [\n                [\"1\",\"1\",\"0\",\"0\",\"0\"],\n                [\"1\",\"1\",\"0\",\"0\",\"0\"],\n                [\"0\",\"0\",\"1\",\"0\",\"0\"],\n                [\"0\",\"0\",\"0\",\"1\",\"1\"]\n            ]\n\n            print(numIslands(grid))  # Should print 3.\n            <\/pre>\n<\/section>\n<section>\n<h2>4. Review of Problem Solving<\/h2>\n<p>\n                We solved the problem using DFS, with a time complexity of O(N * M), where N is the number of rows and M is the number of columns.<br \/>\n                Since we visit each node at most once, this can be considered an efficient method.<br \/>\n                Additionally, the space complexity is also O(N * M), due to the additional space used for the visiting list.\n            <\/p>\n<p>\n                While DFS can use a large amount of memory, it can often be more effective than BFS depending on the nature or size of the problem.<br \/>\n                Particularly beneficial in pathfinding problems or problems distinguishing connected components, the advantages of DFS can be utilized.\n            <\/p>\n<\/section>\n<section>\n<h2>5. Conclusion<\/h2>\n<p>\n                In this lecture, we explored the basic concept of DFS and the problem-solving approach.<br \/>\n                DFS can be applied to various problems, so based on this lecture, please try solving different issues.<br \/>\n                Thank you.\n            <\/p>\n<\/section>\n<\/article>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Introduction to Depth-First Search (DFS) Depth-First Search (DFS) is one of the graph exploration algorithms that explores as deep as possible from a given node and, when there are no more nodes to explore, backtracks to the last visited node to explore other paths. This method is used for various purposes depending on the &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33606\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;python coding test course, depth-first search&#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":[145],"tags":[],"class_list":["post-33606","post","type-post","status-publish","format-standard","hentry","category-python-coding-test"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>python coding test course, depth-first search - \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\/33606\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"python coding test course, depth-first search - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"1. Introduction to Depth-First Search (DFS) Depth-First Search (DFS) is one of the graph exploration algorithms that explores as deep as possible from a given node and, when there are no more nodes to explore, backtracks to the last visited node to explore other paths. This method is used for various purposes depending on the &hellip; \ub354 \ubcf4\uae30 &quot;python coding test course, depth-first search&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33606\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:18:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:47:26+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=\"3\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/33606\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33606\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"python coding test course, depth-first search\",\"datePublished\":\"2024-11-01T09:18:26+00:00\",\"dateModified\":\"2024-11-01T11:47:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33606\/\"},\"wordCount\":397,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Python Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33606\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33606\/\",\"name\":\"python coding test course, depth-first search - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:18:26+00:00\",\"dateModified\":\"2024-11-01T11:47:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33606\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33606\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33606\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"python coding test course, depth-first search\"}]},{\"@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":"python coding test course, depth-first search - \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\/33606\/","og_locale":"ko_KR","og_type":"article","og_title":"python coding test course, depth-first search - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"1. Introduction to Depth-First Search (DFS) Depth-First Search (DFS) is one of the graph exploration algorithms that explores as deep as possible from a given node and, when there are no more nodes to explore, backtracks to the last visited node to explore other paths. This method is used for various purposes depending on the &hellip; \ub354 \ubcf4\uae30 \"python coding test course, depth-first search\"","og_url":"https:\/\/atmokpo.com\/w\/33606\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:18:26+00:00","article_modified_time":"2024-11-01T11:47:26+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":"3\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/33606\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33606\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"python coding test course, depth-first search","datePublished":"2024-11-01T09:18:26+00:00","dateModified":"2024-11-01T11:47:26+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33606\/"},"wordCount":397,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Python Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33606\/","url":"https:\/\/atmokpo.com\/w\/33606\/","name":"python coding test course, depth-first search - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:18:26+00:00","dateModified":"2024-11-01T11:47:26+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33606\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33606\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33606\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"python coding test course, depth-first search"}]},{"@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\/33606","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=33606"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33606\/revisions"}],"predecessor-version":[{"id":33607,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33606\/revisions\/33607"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}