{"id":33582,"date":"2024-11-01T09:18:07","date_gmt":"2024-11-01T09:18:07","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=33582"},"modified":"2024-11-01T11:47:32","modified_gmt":"2024-11-01T11:47:32","slug":"python-coding-test-course-game-development","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/33582\/","title":{"rendered":"python coding test course, game development"},"content":{"rendered":"<p><body><\/p>\n<p>Today, we will solve an algorithm problem for game development using Python. In this tutorial, we will enhance our problem-solving skills through algorithm problems and learn various techniques and concepts that can be applied to real game development.<\/p>\n<h2>Problem Description<\/h2>\n<p>Problem: &#8220;Strange Grid&#8221; Game<\/p>\n<p>A grid-shaped game board is given, where each cell contains an integer. In the game, the player starts from outside the boundary of the board and can move up to 3 cells. However, the score that the player can move is calculated as the sum of the values of each cell. The player must choose moves in such a way that they ultimately have a score of 0 or more. Find the possible maximum score while visiting all the cells of the game board.<\/p>\n<h2>Input<\/h2>\n<pre>\n        First line: Size of the grid N (1 \u2264 N \u2264 10)\n        Next N lines: Each element of the grid (\u2212100 \u2264 element \u2264 100)\n    <\/pre>\n<h2>Output<\/h2>\n<pre>\n        Maximum achievable score\n    <\/pre>\n<h3>Example Input<\/h3>\n<pre>\n    3\n    10 -1 2\n    -5 20 3\n    2 -3 -4\n    <\/pre>\n<h3>Example Output<\/h3>\n<pre>\n    32\n    <\/pre>\n<h2>Problem Analysis<\/h2>\n<p>This problem requires using the &#8216;DFS (Depth First Search)&#8217; technique to explore all possible paths and find the maximum score among them. First, we need to define the moving paths for each cell in the grid. According to the given rules, let us explore all possible paths from the starting point to find the highest total score.<\/p>\n<h2>Problem Solving Process<\/h2>\n<h3>1. Set Up Basic Structure<\/h3>\n<p>To solve the problem, we will implement DFS using a recursive function. The recursive function will explore all possible paths from the current position. Here is the basic framework.<\/p>\n<pre><code>def dfs(x, y, score):\n    # Function to explore all possible paths from the current position and return the maximum score\n    pass\n    <\/code><\/pre>\n<h3>2. Implement Path Exploration Logic<\/h3>\n<p>Now, we should be able to calculate the positions when moving up, down, left, and right from each cell. To do this, we will use a direction array. We can use the following direction array to explore paths.<\/p>\n<pre><code>dx = [0, 1, 0, -1] # Left and Right\ndy = [1, 0, -1, 0] # Up and Down<\/code><\/pre>\n<h3>3. Implement Recursive Function<\/h3>\n<p>Now let&#8217;s recursively move within the DFS function and calculate the scores. We will check the possibility of movement based on the size of the grid and the current score, and set the boundary condition.<\/p>\n<pre><code>def dfs(x, y, score, visited):\n    if x &lt; 0 or x &gt;= N or y &lt; 0 or y &gt;= N or visited[x][y]:\n        return score\n    \n    visited[x][y] = True\n    score += grid[x][y] # Add the score of the current position to the current score.\n    \n    max_score = score\n    for i in range(4):\n        new_x = x + dx[i]\n        new_y = y + dy[i]\n        max_score = max(max_score, dfs(new_x, new_y, score, visited))\n    \n    visited[x][y] = False # Backtracking\n    return max_score<\/code><\/pre>\n<h3>4. Implement Main Function<\/h3>\n<p>To start exploring all paths, we need to define the main function. In this function, we will read the grid input and start DFS exploration. Finally, we output the maximum score.<\/p>\n<pre><code>def main():\n    global grid, N\n    N = int(input())\n    grid = [list(map(int, input().split())) for _ in range(N)]\n    \n    visited = [[False]*N for _ in range(N)]\n    max_total_score = 0\n    \n    # Start DFS from all positions.\n    for i in range(N):\n        for j in range(N):\n            max_total_score = max(max_total_score, dfs(i, j, 0, visited))\n    \n    print(max_total_score)<\/code><\/pre>\n<h3>5. Full Code<\/h3>\n<p>The complete code that integrates all parts is as follows.<\/p>\n<pre><code>def dfs(x, y, score, visited):\n    if x &lt; 0 or x &gt;= N or y &lt; 0 or y &gt;= N or visited[x][y]:\n        return score\n    \n    visited[x][y] = True\n    score += grid[x][y]\n    \n    max_score = score\n    for i in range(4):\n        new_x = x + dx[i]\n        new_y = y + dy[i]\n        max_score = max(max_score, dfs(new_x, new_y, score, visited))\n    \n    visited[x][y] = False\n    return max_score\n\ndef main():\n    global grid, N\n    N = int(input())\n    grid = [list(map(int, input().split())) for _ in range(N)]\n    \n    visited = [[False]*N for _ in range(N)]\n    max_total_score = 0\n    \n    for i in range(N):\n        for j in range(N):\n            max_total_score = max(max_total_score, dfs(i, j, 0, visited))\n    \n    print(max_total_score)\n\nif __name__ == \"__main__\":\n    main()<\/code><\/pre>\n<h2>Conclusion<\/h2>\n<p>Through this problem, we learned how to utilize DFS to explore paths and maximize points in a game environment. By solving coding problems through algorithms, we can enhance our effectiveness as game developers.<\/p>\n<h2>Additional Learning Resources<\/h2>\n<p>Referencing the following materials can provide deeper learning:<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.python.org\/3\/tutorial\/index.html\">Official Python Tutorial<\/a><\/li>\n<li><a href=\"https:\/\/www.geeksforgeeks.org\/\">GeeksforGeeks Algorithm Tutorial<\/a><\/li>\n<li><a href=\"https:\/\/leetcode.com\/\">LeetCode Problem Solving<\/a><\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, we will solve an algorithm problem for game development using Python. In this tutorial, we will enhance our problem-solving skills through algorithm problems and learn various techniques and concepts that can be applied to real game development. Problem Description Problem: &#8220;Strange Grid&#8221; Game A grid-shaped game board is given, where each cell contains an &hellip; <a href=\"https:\/\/atmokpo.com\/w\/33582\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;python coding test course, game development&#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-33582","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, game development - \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\/33582\/\" \/>\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, game development - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Today, we will solve an algorithm problem for game development using Python. In this tutorial, we will enhance our problem-solving skills through algorithm problems and learn various techniques and concepts that can be applied to real game development. Problem Description Problem: &#8220;Strange Grid&#8221; Game A grid-shaped game board is given, where each cell contains an &hellip; \ub354 \ubcf4\uae30 &quot;python coding test course, game development&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/33582\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:18:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:47:32+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\/33582\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33582\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"python coding test course, game development\",\"datePublished\":\"2024-11-01T09:18:07+00:00\",\"dateModified\":\"2024-11-01T11:47:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33582\/\"},\"wordCount\":414,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Python Coding Test\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/33582\/\",\"url\":\"https:\/\/atmokpo.com\/w\/33582\/\",\"name\":\"python coding test course, game development - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:18:07+00:00\",\"dateModified\":\"2024-11-01T11:47:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/33582\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/33582\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/33582\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"python coding test course, game development\"}]},{\"@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, game development - \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\/33582\/","og_locale":"ko_KR","og_type":"article","og_title":"python coding test course, game development - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Today, we will solve an algorithm problem for game development using Python. In this tutorial, we will enhance our problem-solving skills through algorithm problems and learn various techniques and concepts that can be applied to real game development. Problem Description Problem: &#8220;Strange Grid&#8221; Game A grid-shaped game board is given, where each cell contains an &hellip; \ub354 \ubcf4\uae30 \"python coding test course, game development\"","og_url":"https:\/\/atmokpo.com\/w\/33582\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:18:07+00:00","article_modified_time":"2024-11-01T11:47:32+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\/33582\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/33582\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"python coding test course, game development","datePublished":"2024-11-01T09:18:07+00:00","dateModified":"2024-11-01T11:47:32+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/33582\/"},"wordCount":414,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Python Coding Test"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/33582\/","url":"https:\/\/atmokpo.com\/w\/33582\/","name":"python coding test course, game development - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:18:07+00:00","dateModified":"2024-11-01T11:47:32+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/33582\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/33582\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/33582\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"python coding test course, game development"}]},{"@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\/33582","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=33582"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33582\/revisions"}],"predecessor-version":[{"id":33583,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/33582\/revisions\/33583"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=33582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=33582"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=33582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}