Swift Coding Test Course, Game Development

Game development is not only an interesting field but also requires complex algorithms and problem-solving skills.
In this article, we will look at a coding test problem using the Swift language and detail the process of solving it.
This course will be particularly helpful for programmers interested in game development.
When a problem is presented, we will analyze the process of solving it step by step.

Problem Description

Our goal is to develop a level of the game in which N monsters appear.
Each monster has its own health points (Hit Points, HP) and damage attributes,
and the player can attack the monsters with a specific attack power.
In this problem, the player must find the optimal attack strategy to defeat all the monsters.

Problem: Numerical Optimization

Based on the HP and damage of the given monsters,
calculate the minimum number of attacks required for the player to defeat the monsters.
The player has a fixed attack power for each attack, and
the monsters decrease their HP each time they are attacked.
The monsters continuously receive attacks until their HP reaches 0 or below.

Input Format

  • The first line contains the number of monsters N (1 ≤ N ≤ 1000).
  • The second line contains the HP of N monsters separated by spaces. (1 ≤ HP ≤ 10000)
  • The third line contains the damage of N monsters separated by spaces. (1 ≤ Damage ≤ 100)
  • The last line contains the player’s attack power A (1 ≤ A ≤ 10000).

Output Format

Print the minimum number of attacks.

Problem Approach

To solve this problem, the following approach can be used:

  1. For each monster, knowing the HP and the player’s attack power,
    we need to calculate the number of attacks required to defeat the monster.
  2. Calculate the number of attacks needed to defeat each monster by dividing the monster’s HP by the player’s attack power.
  3. By summing up the required attack counts for each monster,
    we can derive the final result, the minimum number of attacks.

Code Implementation

Now let’s write the Swift code:


    import Foundation

    func minimumAttacksToDefeatMonsters(hpList: [Int], damageList: [Int], attackPower: Int) -> Int {
        var totalAttacks = 0

        for hp in hpList {
            // Calculate the number of attacks required for each monster
            let requiredAttacks = (hp + attackPower - 1) / attackPower
            totalAttacks += requiredAttacks
        }
        
        return totalAttacks
    }

    // Example input
    let n = 3
    let hpList = [100, 200, 300]
    let damageList = [50, 70, 90] // Not used but provided as a condition of the problem
    let attackPower = 75

    let result = minimumAttacksToDefeatMonsters(hpList: hpList, damageList: damageList, attackPower: attackPower)
    print("Minimum number of attacks: \(result)")
    

Code Explanation

In the above code, we calculated the minimum number of attacks required to defeat the monsters based on the player’s attack power and the monsters’ HP.
The minimumAttacksToDefeatMonsters function iterates over the given HP list and calculates the required number of attacks for each monster.

First, we compute the value of the monster’s HP divided by the player’s attack power.
If the monster’s HP does not divide evenly by the player’s attack power,
then we need to round up the number of attacks required to defeat the monster.
In this case, we use (hp + attackPower - 1) / attackPower to
calculate the required number of attacks. Finally, we sum up the
calculated attack counts for all monsters and return the final result.

Performance Analysis

The time complexity of this algorithm is O(N). This is because we simply calculate the number of attacks required for each monster.
Since the maximum N is 1000, this algorithm is very efficient in terms of performance.

Conclusion

In this tutorial, we covered a coding test problem related to game development using Swift.
By designing an algorithm to systematically defeat monsters,
we learned methods for solving algorithmic problems in game development.
We encourage you to use this knowledge to develop strategies applicable to various games.

Swift Coding Test Course, I Don’t Want to Be a Liar

This is a course where you can practice solving various problems for effective algorithm problem-solving. The problem we will tackle today is based on the theme ‘I Don’t Want to Be a Liar’. Through this problem, you will learn statistical thinking, conditional statements, and list processing techniques.

Problem Description

Recently, a participant attended a wedding where he was elected as a slacker. However, there were 100 friends at the wedding whom he did not want to invite. These friends are planning to introduce others as their friends by lying.

Each friend can claim, ‘I know A and B’, about specific individuals. Your task is to verify all the lies and determine whether two friends know the same person.

The given input includes the number of friends and the lying information of each friend. Based on the input information, you need to determine which friends are lying.

Input Example

                5
                1 2
                2 3
                3 4
                4 5
                1 5
            

The first line contains the number of friends N, and the following N lines provide the numbers of the friends each friend knows.

Output Example

                Yes
            

If the two friends know each other, print ‘Yes’; otherwise, print ‘No’.

Approach to the Problem

To solve this problem, we can use graph search algorithms. We represent each friend as a vertex and their relationships as edges to form a graph. We can use search methods such as DFS or BFS to check if two friends know each other.

The basic approach is to store friend relationships in a list and conduct a graph search for the given two friends.

Code Implementation

Below is the implementation of the code in Swift.

                
                import Foundation

                func canKnowEachOther(N: Int, friendships: [(Int, Int)], friendA: Int, friendB: Int) -> String {
                    // Initialize graph
                    var graph = Array(repeating: [Int](), count: N + 1)

                    // Store friendships
                    for (a, b) in friendships {
                        graph[a].append(b)
                        graph[b].append(a)
                    }

                    // Initialize BFS
                    var queue = [friendA]
                    var visited = Array(repeating: false, count: N + 1)
                    visited[friendA] = true

                    while !queue.isEmpty {
                        let current = queue.removeFirst()

                        // Did we find friend B?
                        if current == friendB {
                            return "Yes"
                        }

                        for neighbor in graph[current] {
                            if !visited[neighbor] {
                                visited[neighbor] = true
                                queue.append(neighbor)
                            }
                        }
                    }

                    return "No"
                }

                // Input example
                let N = 5
                let friendships = [(1, 2), (2, 3), (3, 4), (4, 5), (1, 5)]
                let result = canKnowEachOther(N: N, friendships: friendships, friendA: 1, friendB: 5)
                print(result) // "Yes"
                
            

Code Explanation

The above code operates as follows:

  • Graph Initialization: Initializes the graph in the form of an adjacency list based on the input friendships.
  • BFS Search: Starts from the given friend A and executes a BFS to check if we reach friend B. Already visited friends are tracked to avoid revisiting.
  • Return Result: If friend B is found, it returns “Yes”; if not found after finishing the search, it returns “No”.

Additional Considerations

The method for solving this problem is quite intuitive as it involves basic DFS/BFS searching. However, if the scope of the problem increases, we may need to explore more efficient methods. For example, if the number of friends becomes large, applying the Union-Find algorithm instead of DFS may be performance advantageous.

If more complex relationships or random configurations of data are provided, various techniques (e.g., Dynamic Programming options) can be utilized to address them. It is crucial to consider worst-case time and space complexity when selecting the algorithm design.

This article is part of a course on solving various problems related to the Swift coding test. Through understanding the problem and exploring solutions, we hope to enhance your problem-solving skills.

Swift Coding Test Course, Find the Largest Square

Algorithm problems play an important role in developing problem-solving skills for programmers. In this article, we will address the problem of finding the largest square using Swift. The goal is to find the area of the largest square in a given 2D array.

Problem Description

Given a binary matrix, write a function to find the largest square containing only 1s and return its area. 0 represents an empty cell, and 1 represents a filled cell.

Example

Input:
[
    [1, 0, 1, 0, 0],
    [1, 0, 1, 1, 1],
    [1, 1, 1, 1, 1],
    [1, 0, 0, 1, 0]
]

Output: 4

Problem Solving Process

Approach to the Problem

To solve this problem, we will use a dynamic programming approach. Below are the steps to tackle the problem.

  1. Create a DP table based on the given binary matrix.
  2. Calculate the size of the largest square at each cell.
  3. More specifically, while traversing each element of the matrix, if that element is 1, update it to be the minimum value of the element to the right, below, and diagonally below plus one.
  4. Calculate and return the area of the largest square found.

Dynamic Programming Table Construction

The size of the DP table will be the same as the input matrix, and the values at each element will be set according to the following rules.

  • If it is 0: Set to 0 since no square can be formed at that position.
  • If it is 1: Calculate the size of the square by referencing the adjacent values as described above.

Swift Code Implementation

Now let’s implement the approach described above in Swift code.


func maximalSquare(_ matrix: [[Character]]) -> Int {
    guard !matrix.isEmpty else { return 0 }
    let rows = matrix.count
    let cols = matrix[0].count
    var dp = Array(repeating: Array(repeating: 0, count: cols), count: rows)
    var maxSide = 0

    for i in 0..<rows {="" for="" j="" in="" 0..<cols="" if="" i="=" 0="" ||="" dp[i][j]="matrix[i][j]" =="1" ?="" 1="" :="" }="" else="" matrix[i][j]="=" "1"="" dp[i][j-1],="" dp[i-1][j-1])="" +="" maxside="max(maxSide," dp[i][j])="" return="" *="" <="" code=""></rows>
<h3>Code Explanation</h3> <p>Let me explain all the variables used in the code above:</p> <ul> <li><strong>rows</strong>: The number of rows in the matrix</li> <li><strong>cols</strong>: The number of columns in the matrix</li> <li><strong>dp</strong>: The dynamic programming table storing the size of each square</li> <li><strong>maxSide</strong>: The length of the side of the largest square found so far</li> </ul> <h3>Test Cases</h3> <p>Now let's test the code we wrote. Below are some test cases.</p> <pre><code> let testMatrix1: [[Character]] = [ ["1", "0", "1", "0", "0"], ["1", "0", "1", "1", "1"], ["1", "1", "1", "1", "1"], ["1", "0", "0", "1", "0"] ] let result1 = maximalSquare(testMatrix1) print(result1) // 4 let testMatrix2: [[Character]] = [ ["0", "1"], ["1", "0"] ] let result2 = maximalSquare(testMatrix2) print(result2) // 1 </code></pre> <h3>Conclusion</h3> <p>In this tutorial, we learned how to solve the problem of finding the largest square using Swift. This problem can be efficiently solved through the application of dynamic programming and is commonly encountered in coding interviews. Solving real algorithm problems is very beneficial, and I hope that through practice, you can elevate your problem-solving skills to the next level.</p> <h2>References</h2> <p>If you want to learn more about this problem in depth, please refer to the following resources:</p> <ul> <li><a href="https://www.geeksforgeeks.org/largest-square-formed-in-a-matrix/" target="_blank" rel="noopener">Largest Square Formed in a Matrix - GeeksforGeeks</a></li> <li><a href="https://leetcode.com/problems/maximal-square/" target="_blank" rel="noopener">Maximal Square - LeetCode</a></li> <li><a href="https://medium.com/swlh/understanding-dynamic-programming-with-maximum-square-14eb7d9f6548" target="_blank" rel="noopener">Understanding Dynamic Programming with Maximum Square - Medium</a></li> </ul> <p></p>
<footer class="entry-footer"> <span class="byline"><span class="author vcard"><img alt="" src="https://secure.gravatar.com/avatar/5b7f47db621d1eab02540d35048be506?s=49&amp;d=mm&amp;r=g" srcset="https://secure.gravatar.com/avatar/5b7f47db621d1eab02540d35048be506?s=98&amp;d=mm&amp;r=g 2x" class="avatar avatar-49 photo" height="49" width="49" decoding="async"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://atmokpo.com/w/en/author/root/">root</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://atmokpo.com/w/34672/" rel="bookmark"><time class="entry-date published" datetime="2024-11-01T09:30:43+00:00">2024/11/01</time><time class="updated" datetime="2024-11-01T11:27:03+00:00">2024/11/01</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://atmokpo.com/w/category/swift-coding-test/" rel="category tag">Swift Coding Test</a></span> </footer><!-- .entry-footer -->
<article id="post-34670" class="post-34670 post type-post status-publish format-standard hentry category-swift-coding-test"> <header class="entry-header"> <h2 class="entry-title"><a href="https://atmokpo.com/w/34670/" rel="bookmark">Swift Coding Test Course, Finding the Fastest Bus Route</a></h2> </header><!-- .entry-header --> <div class="entry-content"> <div class="blog-post"> <p> Today, we will address the problem of ‘Finding the Fastest Bus Route’ for those of you preparing for coding tests using Swift. This problem requires an understanding of graph exploration, particularly shortest path algorithms. It is a type of problem that frequently appears in actual coding tests, so please pay close attention. </p> <h2>Problem Description</h2> <p> You have information about bus routes in a city. There are N bus stops in this city, and there is a bus route connecting stop i and stop j. Each route has a travel time, that is, a weight assigned to it. Your goal is to find the fastest route from a specific stop S to arrive at stop E. If there is no route, you should output “Cannot arrive.” </p> <h3>Input Format</h3> <ul> <li>The first line contains the number of stops N (1 ≤ N ≤ 1000) and the number of bus routes M (1 ≤ M ≤ 1000).</li> <li>The next M lines contain the stops i, j, and the travel time T for the corresponding bus route.</li> <li>Finally, two bus stops S and E are given.</li> </ul> <h3>Output Format</h3> <p> Please output the fastest travel time or “Cannot arrive.” </p> <h2>Example Input</h2> <pre> 5 6 1 2 4 1 3 2 2 3 5 3 4 3 2 4 1 4 5 1 1 5 </pre> <h2>Example Output</h2> <pre> 6 </pre> <h2>Problem Solving Process</h2> <p> To solve this problem, we will use Dijkstra’s algorithm, which is one of the shortest path algorithms. Dijkstra’s algorithm is useful for finding the shortest path in graphs with weighted edges. </p> <h3>Algorithm Overview</h3> <p> Dijkstra’s algorithm works by using a priority queue to select the next vertex and updating the paths to all vertices connected to that vertex. The shortest distances are gradually expanded through initialization and update processes for all vertices in the graph. </p> <h3>Implementation Steps</h3> <ol> <li><strong>Receive Input:</strong> Take input for the number of stops N and the number of routes M. Then receive the route information for M routes.</li> <li><strong>Create Graph Structure:</strong> Store the graph in the form of an adjacency list.</li> <li><strong>Implement Dijkstra’s Algorithm:</strong> Calculate the shortest path from the starting stop to all other stops.</li> <li><strong>Output Result:</strong> Output the shortest time to the destination or “Cannot arrive.”</li> </ol> <h3>Swift Code Implementation</h3> <pre> import Foundation struct BusRoute { let destination: Int let time: Int } func dijkstra(n: Int, graph: [[BusRoute]], start: Int, end: Int) -&gt; Int { var distances = Array(repeating: Int.max, count: n + 1) var priorityQueue = [(Int, Int)]() // (stop, time) distances[start] = 0 priorityQueue.append((start, 0)) while !priorityQueue.isEmpty { priorityQueue.sort { $0.1 &lt; $1.1 } let (current, currentDistance) = priorityQueue.removeFirst() if currentDistance &gt; distances[current] { continue } for route in graph[current] { let newDistance = currentDistance + route.time if newDistance &lt; distances[route.destination] { distances[route.destination] = newDistance priorityQueue.append((route.destination, newDistance)) } } } return distances[end] == Int.max ? -1 : distances[end] } func main() { let input = readLine()!.split(separator: " ").map { Int($0)! } let n = input[0] let m = input[1] var graph = Array(repeating: [BusRoute](), count: n + 1) for _ in 0..<m {="" let="" routeinfo="readLine()!.split(separator:" "="" ").map="" int($0)!="" }="" graph[routeinfo[0]].append(busroute(destination:="" routeinfo[1],="" time:="" routeinfo[2]))="" endpoints="readLine()!.split(separator:" result="dijkstra(n:" n,="" graph:="" graph,="" start:="" endpoints[0],="" end:="" endpoints[1])="" print(result="=" -1="" ?="" "cannot="" arrive."="" :="" result)="" main()="" <="" pre=""> <h3>Code Explanation</h3> <p> The above code implements Dijkstra's algorithm. After constructing the graph based on input, it calculates the shortest path from the given starting point and outputs the result. Using a priority queue to find the fastest route is key. </p> <h2>Conclusion</h2> <p> I hope this problem has enhanced your understanding of shortest path problems, which frequently appear in coding tests. You can solve various problems using Dijkstra's algorithm as well as other graph algorithms. I encourage you to become a developer equipped with both theory and practical skills through continuous practice. </p> </m></pre></div> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="byline"><span class="author vcard"><img alt="" src="https://secure.gravatar.com/avatar/5b7f47db621d1eab02540d35048be506?s=49&amp;d=mm&amp;r=g" srcset="https://secure.gravatar.com/avatar/5b7f47db621d1eab02540d35048be506?s=98&amp;d=mm&amp;r=g 2x" class="avatar avatar-49 photo" height="49" width="49" loading="lazy" decoding="async"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://atmokpo.com/w/en/author/root/">root</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://atmokpo.com/w/34670/" rel="bookmark"><time class="entry-date published" datetime="2024-11-01T09:30:41+00:00">2024/11/01</time><time class="updated" datetime="2024-11-01T11:27:03+00:00">2024/11/01</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://atmokpo.com/w/category/swift-coding-test/" rel="category tag">Swift Coding Test</a></span> </footer><!-- .entry-footer --> </article><!-- #post-34670 --> <article id="post-34668" class="post-34668 post type-post status-publish format-standard hentry category-swift-coding-test"> <header class="entry-header"> <h2 class="entry-title"><a href="https://atmokpo.com/w/34668/" rel="bookmark">Swift Coding Test Course, Finding the Longest Increasing Subsequence</a></h2> </header><!-- .entry-header --> <div class="entry-content"> <p></p> <p> To solve algorithm problems, it is crucial to understand the essence of the problem and to choose the appropriate data structures and algorithms. In this course, we will discuss the ‘Longest Increasing Subsequence (LIS)’ problem. This problem involves finding the longest possible subsequence that maintains an increasing order while processing specific data. </p> <h2>1. Problem Definition</h2> <p> The problem is to find the longest increasing subsequence in a given integer array. A subsequence means selecting some numbers from the array while maintaining their order. It is important to note that the selected numbers do not need to be contiguous. For example, given the array <strong>[10, 20, 10, 30, 20, 50]</strong>, the longest increasing subsequence is <strong>[10, 20, 30, 50]</strong>. </p> <h3>1.1 Problem Examples</h3> <pre class="code"> Input: [10, 20, 10, 30, 20, 50] Output: 4 (Subsequence: [10, 20, 30, 50]) Input: [5, 6, 3, 7, 8, 4, 1] Output: 5 (Subsequence: [5, 6, 7, 8]) </pre> <h2>2. Problem Approach</h2> <p> The longest increasing subsequence problem can be approached with the following two basic methods: </p> <ol> <li><strong>Dynamic Programming</strong></li> <li><strong>Binary Search</strong></li> </ol> <h3>2.1 Dynamic Programming</h3> <p> Dynamic programming is a method of solving problems by breaking them down into smaller subproblems. To solve the LIS problem using dynamic programming, two arrays can be used. One array stores the length of the longest increasing subsequence for each element of the original array, and the other array stores the elements that make up that subsequence. </p> <h3>2.2 Binary Search</h3> <p> This method allows for a more efficient solution to the LIS problem. The method using binary search has a time complexity of O(n log n), and determines the position of each element by utilizing the length of the already discovered increasing subsequences during the array search process. </p> <h2>3. Algorithm Implementation</h2> <p> Below is the process of solving the LIS problem using dynamic programming and binary search implemented in Swift. </p> <h3>3.1 Dynamic Programming Implementation</h3> <pre class="code"> func lengthOfLIS(_ nums: [Int]) -&gt; Int { guard !nums.isEmpty else { return 0 } var dp = Array(repeating: 1, count: nums.count) var maxLength = 1 for i in 1..<nums.count {="" for="" j="" in="" 0..<i="" if="" nums[i]=""> nums[j] { dp[i] = max(dp[i], dp[j] + 1) } } maxLength = max(maxLength, dp[i]) } return maxLength } // Example usage let nums = [10, 20, 10, 30, 20, 50] print(lengthOfLIS(nums)) // Output: 4 </nums.count></pre> <h3>3.2 Binary Search Implementation</h3> <pre class="code"> func lengthOfLIS(_ nums: [Int]) -&gt; Int { var dp = [Int]() for num in nums { if let idx = dp.firstIndex(where: { $0 &gt;= num }) { dp[idx] = num } else { dp.append(num) } } return dp.count } // Example usage let nums = [10, 20, 10, 30, 20, 50] print(lengthOfLIS(nums)) // Output: 4 </pre> <h2>4. Time Complexity Analysis</h2> <p> For dynamic programming, the time complexity is O(n^2) because a double loop is used to compare every pair of array elements. In contrast, the approach implemented with binary search has a time complexity of O(n log n), making it more efficient for handling larger inputs. </p> <h2>5. Conclusion</h2> <p> Today we discussed the problem of finding the longest increasing subsequence. We explored two approach methods: dynamic programming and binary search, analyzing each implementation and its time complexity. The process of solving such problems can be excellent practice for algorithm interviews. It is recommended to tackle various problems to prepare for coding tests. </p> <p>In the next lecture, we will cover another algorithm problem. We appreciate your interest!</p> <p></p> </div><!-- .entry-content --> <footer class="entry-footer"> <span class="byline"><span class="author vcard"><img alt="" src="https://secure.gravatar.com/avatar/5b7f47db621d1eab02540d35048be506?s=49&amp;d=mm&amp;r=g" srcset="https://secure.gravatar.com/avatar/5b7f47db621d1eab02540d35048be506?s=98&amp;d=mm&amp;r=g 2x" class="avatar avatar-49 photo" height="49" width="49" loading="lazy" decoding="async"><span class="screen-reader-text">Author </span> <a class="url fn n" href="https://atmokpo.com/w/en/author/root/">root</a></span></span><span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://atmokpo.com/w/34668/" rel="bookmark"><time class="entry-date published" datetime="2024-11-01T09:30:40+00:00">2024/11/01</time><time class="updated" datetime="2024-11-01T11:27:04+00:00">2024/11/01</time></a></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://atmokpo.com/w/category/swift-coding-test/" rel="category tag">Swift Coding Test</a></span> </footer><!-- .entry-footer --> </article><!-- #post-34668 --> <nav class="navigation pagination" aria-label="Posts pagination"> <h2 class="screen-reader-text">Posts pagination</h2> <div class="nav-links"><a class="prev page-numbers" href="https://atmokpo.com/w/category/swift-coding-test/page/24/?lcp_pagelistcategorypostswidget-3=5">Previous page</a> <a class="page-numbers" href="https://atmokpo.com/w/category/swift-coding-test/?lcp_pagelistcategorypostswidget-3=5"><span class="meta-nav screen-reader-text">Page </span>1</a> <span class="page-numbers dots">…</span> <a class="page-numbers" href="https://atmokpo.com/w/category/swift-coding-test/page/24/?lcp_pagelistcategorypostswidget-3=5"><span class="meta-nav screen-reader-text">Page </span>24</a> <span aria-current="page" class="page-numbers current"><span class="meta-nav screen-reader-text">Page </span>25</span> <a class="page-numbers" href="https://atmokpo.com/w/category/swift-coding-test/page/26/?lcp_pagelistcategorypostswidget-3=5"><span class="meta-nav screen-reader-text">Page </span>26</a> <a class="page-numbers" href="https://atmokpo.com/w/category/swift-coding-test/page/27/?lcp_pagelistcategorypostswidget-3=5"><span class="meta-nav screen-reader-text">Page </span>27</a> <a class="next page-numbers" href="https://atmokpo.com/w/category/swift-coding-test/page/26/?lcp_pagelistcategorypostswidget-3=5">Next page</a></div> </nav>
<aside id="secondary" class="sidebar widget-area"> <section id="block-2" class="widget widget_block widget_search"><form role="search" method="get" action="https://atmokpo.com/w/en/" class="wp-block-search__button-outside wp-block-search__text-button wp-block-search"><label class="wp-block-search__label" for="wp-block-search__input-1">Search</label><div class="wp-block-search__inside-wrapper "><input class="wp-block-search__input" id="wp-block-search__input-1" placeholder="" value="" type="search" name="s" required=""><button aria-label="Search" class="wp-block-search__button wp-element-button" type="submit">Search</button></div></form></section><section id="block-10" class="widget widget_block"><ul class="wp-block-page-list"><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/c-coding-test-tutorials/">C++ Coding Test Tutorials</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/collection-of-c-coding-test-tutorials/">Collection of C# Coding Test Tutorials</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/deep-learning-automated-trading/">Deep learning Automated trading</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/deep-learning-natural-language-processing/">Deep learning natural language processing</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/english-sentence-study/">English sentence study</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/flutter-course/">Flutter course</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/gan-deep-learning-course/">GAN deep learning course</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/java-android-app-development/">Java Android app development</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/java-coding-test/">Java Coding Test</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/javascript-coding-test/">Javascript Coding Test</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/kotlin-android-app-development/">Kotlin Android app development</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/kotlin-coding-test/">Kotlin coding test</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/python-auto-trading/">Python Auto Trading</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/python-coding-test/">Python Coding Test</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/python-study/">Python Study</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/pytorch-study/">PyTorch Study</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/react-basics-course/">React basics course</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/spring-boot-backend-development/">Spring Boot backend development</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/swift-coding-test/">Swift Coding Test</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/swift-iphone-app-development-swiftui/">Swift iPhone app development (SwiftUI)</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/swift-iphone-app-development-uikit/">Swift iPhone app development (UIKit)</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/unity-basic/">Unity Basic</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/using-hugging-face/">Using Hugging Face</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/uwp-programming/">UWP Programming</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://atmokpo.com/w/wpf-programming/">WPF Programming</a></li></ul></section><section id="listcategorypostswidget-3" class="widget widget_listcategorypostswidget"><h2 class="widget-title">Category Post List</h2><ul class="lcp_catlist" id="lcp_instance_listcategorypostswidget-3"><li><a href="https://atmokpo.com/w/34836/">Swift Coding Test Course, Making an Integer 1</a></li><li><a href="https://atmokpo.com/w/34834/">Swift Coding Test Course, Implementing Absolute Value Heap</a></li><li><a href="https://atmokpo.com/w/34832/">Swift Coding Test Course, Finding the Critical Path</a></li><li><a href="https://atmokpo.com/w/34830/">Swift Coding Test Course, Finding Binomial Coefficient 2</a></li><li><a href="https://atmokpo.com/w/34828/">Swift Coding Test Course, Finding Binomial Coefficient 1</a></li><li><a href="https://atmokpo.com/w/34826/">Swift Coding Test Course, Find the Number of Colloquial Expressions</a></li><li><a href="https://atmokpo.com/w/34824/">Swift Coding Test Course, Binary Tree</a></li><li><a href="https://atmokpo.com/w/34822/">Swift Coding Test Course, Binary Search</a></li><li><a href="https://atmokpo.com/w/34820/">Swift Coding Test Course, Binary Graph Discrimination</a></li><li><a href="https://atmokpo.com/w/34818/">Swift Coding Test Course, Euclidean Algorithm</a></li></ul><ul class="lcp_paginator"><li><a href="https://atmokpo.com/w/category/swift-coding-test/page/25/?lcp_pagelistcategorypostswidget-3=4#lcp_instance_listcategorypostswidget-3" title="4" class="lcp_prevlink">&lt;&lt;</a></li><li><a href="https://atmokpo.com/w/category/swift-coding-test/page/25/?lcp_pagelistcategorypostswidget-3=1#lcp_instance_listcategorypostswidget-3" title="1">1</a></li><li><a href="https://atmokpo.com/w/category/swift-coding-test/page/25/?lcp_pagelistcategorypostswidget-3=2#lcp_instance_listcategorypostswidget-3" title="2">2</a></li><li><a href="https://atmokpo.com/w/category/swift-coding-test/page/25/?lcp_pagelistcategorypostswidget-3=3#lcp_instance_listcategorypostswidget-3" title="3">3</a></li><li><a href="https://atmokpo.com/w/category/swift-coding-test/page/25/?lcp_pagelistcategorypostswidget-3=4#lcp_instance_listcategorypostswidget-3" title="4">4</a></li><li class="lcp_currentpage">5</li><li><a href="https://atmokpo.com/w/category/swift-coding-test/page/25/?lcp_pagelistcategorypostswidget-3=6#lcp_instance_listcategorypostswidget-3" title="6">6</a></li><li><a href="https://atmokpo.com/w/category/swift-coding-test/page/25/?lcp_pagelistcategorypostswidget-3=7#lcp_instance_listcategorypostswidget-3" title="7">7</a></li><li><a href="https://atmokpo.com/w/category/swift-coding-test/page/25/?lcp_pagelistcategorypostswidget-3=8#lcp_instance_listcategorypostswidget-3" title="8">8</a></li><li><a href="https://atmokpo.com/w/category/swift-coding-test/page/25/?lcp_pagelistcategorypostswidget-3=9#lcp_instance_listcategorypostswidget-3" title="9">9</a></li><li><a href="https://atmokpo.com/w/category/swift-coding-test/page/25/?lcp_pagelistcategorypostswidget-3=10#lcp_instance_listcategorypostswidget-3" title="10">10</a></li><span class="lcp_elipsis">...</span><li><a href="https://atmokpo.com/w/category/swift-coding-test/page/25/?lcp_pagelistcategorypostswidget-3=14#lcp_instance_listcategorypostswidget-3" title="14">14</a></li><li><a href="https://atmokpo.com/w/category/swift-coding-test/page/25/?lcp_pagelistcategorypostswidget-3=6#lcp_instance_listcategorypostswidget-3" title="6" class="lcp_nextlink">&gt;&gt;</a></li></ul></section><section id="block-3" class="widget widget_block"> <div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow"> <h3 class="wp-block-heading">최신 글</h3> <ul class="wp-block-latest-posts__list wp-block-latest-posts"><li><a class="wp-block-latest-posts__post-title" href="https://atmokpo.com/w/37979/">Unity 2D Game Development, Create a Platform Game Including Jumps, Obstacles, and Enemies.</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://atmokpo.com/w/37977/">Unity 2D Game Development, Adding Effects Using Particle System Implementing visual effects such as explosions and flames using the particle system.</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://atmokpo.com/w/37973/">Unity 2D Game Development, Touch Input and Mobile Game Development Creation of 2D games utilizing touch input on mobile devices.</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://atmokpo.com/w/37975/">Unity 2D Game Development, Power-Up and Buff System Creating a power-up system that temporarily enhances the player’s abilities.</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://atmokpo.com/w/37971/">Unity 2D Game Development, Quest and Mission System Creating a quest system where rewards are given for achieving specific goals.</a></li> </ul></div></div> </section> </aside><!-- .sidebar .widget-area -->
<footer id="colophon" class="site-footer"> <div class="site-info"> <span class="site-title"><a href="https://atmokpo.com/w/en/" rel="home">라이브스마트</a></span> <a href="https://wordpress.org/" class="imprint"> Proudly powered by WordPress </a> </div><!-- .site-info --> </footer><!-- .site-footer -->
<link rel="stylesheet" id="lcp_paginator-css" href="https://atmokpo.com/w/wp-content/plugins/list-category-posts//lcp_paginator.css?ver=6.7.2" media="all"> <script src="https://atmokpo.com/w/wp-content/plugins/collapse-magic/js/collapse-magic.js?x=146&amp;ver=1.0" id="claps-main-js"></script> <script defer="" src="https://atmokpo.com/w/wp-content/plugins/koko-analytics/assets/dist/js/script.js?ver=1.6.4" id="koko-analytics-js"></script> <script src="https://atmokpo.com/w/wp-content/plugins/responsive-accordion-and-collapse/js/accordion-custom.js?ver=6.7.2" id="call_ac-custom-js-front-js"></script> <script src="https://atmokpo.com/w/wp-content/plugins/responsive-accordion-and-collapse/js/accordion.js?ver=6.7.2" id="call_ac-js-front-js"></script> <script src="https://stats.wp.com/e-202515.js" id="jetpack-stats-js" data-wp-strategy="defer"></script> <script id="jetpack-stats-js-after"> _stq = window._stq || []; _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"238449126\",\"post\":\"0\",\"tz\":\"0\",\"srv\":\"atmokpo.com\",\"j\":\"1:14.2.1\"}") ]); _stq.push([ "clickTrackerInit", "238449126", "0" ]); </script> <script> document.querySelectorAll("code").forEach(function(codeBlock) { // 내용에 '<'나 '>'가 포함된 경우에만 변환 if (codeBlock.innerHTML.includes("<") && codeBlock.innerHTML.includes(">")) { codeBlock.textContent = codeBlock.innerHTML; } }); </script>