Best Team - codepath/compsci_guides GitHub Wiki

Unit 2 Session 1 (Click for link to problem statements)

U-nderstand

Understand what the interviewer is asking for by using test cases and questions about the problem.

P-lan

Plan the solution with appropriate visualizations and pseudocode.

General Idea: First, collect all the scores for each team into lists. Then divide by the number of games to find the average score.

# Step 1: Get all team scores together 

1) Create an empty "scores" dict to hold a list of scores for each team
2) For each "game" dict in the the input
  a) If team is not in "scores":
    i) Map team -> empty list in "scores"
  b) Append score to team -> list in "scores"

# Step 2: Find the highest average score

3) Highest average starts at 0, best team starts at None
4) For each team, score-list in "scores" dict
  a) Get average of score-list
  b) If average is higher than current highest
    i) Replace current highest
   ii) Update best team
5) Return best team

I-mplement

def team_with_best_average_score(games):
    """
    Returns the team with the highest average score from a list of dictionaries representing games.
    Each dictionary contains the team's name and the score they achieved in a game.
    """
    team_scores = {}
    for game in games:
        team = game['team_name']
        score = game['score']
        if team not in team_scores:
            team_scores[team] = []
        team_scores[team].append(score)
    
    highest_avg_score = 0
    best_team = None
    for team, scores in team_scores.items():
        avg_score = sum(scores) / len(scores)
        if avg_score > highest_avg_score:
            highest_avg_score = avg_score
            best_team = team
    
    return best_team