Team Formation Hackerrank | Julia

Author: neptune | 13th-Apr-2023
🏷️ #Hackerrank

Team Formation Hackerrank | Julia

HackerRank is organising a chess tournament for its employees. There are n employees, having IDs 1, 2, n, where the employee has a rating of rating. Two employees can form a team if they have the same rating, and one employee can be in at most one team.


There are q queries, each of the form ( r). For each query, find the number of teams that can be formed from employees with IDs between / and r, inclusive. All queries are Independent of each other.


Example:

Consider n = 4 rating = [2, 3, 4, 2], q=2

queries = [[1,4],[3,4]]


For the first query, all employees are considered Employees with D's 1 and 4 can be teamed as their ratings are the seme There are no other team formations possible so the number of teams is For the second query, employees 3 and 4 are considered either ratings are [34] Since they are different ng teams can be formed. 50. The number of teams is 0.


The function is expected to return an INTEGER ARRAY. 


# The function accepts following parameters:

# 1. INTEGER ARRAY rating

# 2. 2D INTEGER ARRAY queries


Solution in Julia:

# Solution in Julia

 function countTeams(rating, queries)

    n = length(rating)

    results = []

    for query in queries

        l, r = query[1], query[2]

        seen = Dict{Int,Bool}()

        teams = 0

        for i in l:r

            if haskey(seen, rating[i]) && !seen[rating[i]]

                teams += 1

                seen[rating[i]] = true

            elseif !haskey(seen, rating[i])

                seen[rating[i]] = false

            end

        end

        push!(results, teams)

    end

    return results

end


println(countTeams([2, 3, 4, 2], [[1,4],[3,4]]))


Logic applied to solve this problem

The logic to solve the chess tournament problem is as follows:

  1. For each query, iterate over the range of employees specified in the query.

  2. For each employee, check if their rating has been seen before.

  3. If the rating has not been seen before, add it to the seen dictionary with a value of false.

  4. If the rating has been seen before and has not been added to a team yet (seen[rating[i]] == false), increment the teams count and mark the rating as added to a team in the seen dictionary by setting seen[rating[i]] = true.

  5. Return the total number of teams that can be formed for each query.

The idea is to use a dictionary to keep track of which ratings have been seen before and whether or not they have been added to a team. By checking this dictionary for each employee, we can determine whether or not they can be added to an existing team or whether they need to form a new team.




👉 Read More
The Blunder | Hackerrank
5. Solution of Hacker Rank Weather Observation Station 8.
7.Solution of Hacker Rank The Report
Identifying the Odd One Out in a Series of Strings | Hackerrank
4. Solution of Hacker Rank Weather Observation Station 6.
3. Solution of Hacker Rank Weather Observation Station 4.
The PADS | Hackerrank
6. Solution of Hacker Rank Employee Salaries.
1. Basic SQL Select Query of Hacker Rank.
Generate Fibonacci Sequence - JavaScript | Hackerank
Modified 0-1 knapsack problem | Frsco Play Hackerrank
2. Solution of Hacker Rank Weather Observation Station 3.
Weather Observation Station 18 | Hackerrank
Solving the Ice Cream Parlor Problem | Hackerrank
AngularJS - Know Tech Frameworks | Fresco Play
PySpark Milestone Black Friday Sales Data | Fresco Play Hackerrank
Backspace String Compare using R | Fresco Play
Top Earners | HackerRank
Python - Number Based Problem | Hackerrank
Explore more Blogs...