Find Most Wasted Food Item - codepath/compsci_guides GitHub Wiki
Unit 4 Session 2 Advanced (Click for link to problem statements)
U-nderstand
Understand what the interviewer is asking for by using test cases and questions about the problem.
- Q: What is the goal of the problem?
- A: The goal is to identify the food item that was wasted the most in total grams.
- Q: What are the inputs?
- A: The input is a dictionary where the keys are food items (strings) and the values are lists of integers representing the amounts of that food item wasted (in grams).
- Q: What are the outputs?
- A: The output is the name of the food item that has the highest total waste.
- Q: How should the total waste be calculated?
- A: For each food item, sum the values in the list associated with that food item to get the total waste. Then, determine which item has the maximum waste.
- Q: Are there any assumptions about the input?
- A: The dictionary is well-formed with non-negative integer values in the lists.
P-lan
Plan the solution with appropriate visualizations and pseudocode.
General Idea: Iterate through each food item in the dictionary, sum the waste amounts, and track which item has the maximum total waste.
1) Initialize an empty dictionary `total_waste` to store the total waste for each food item.
2) Iterate over each `item, waste_list` pair in the `waste_records` dictionary:
a) Calculate the sum of the `waste_list`.
b) Store the sum in `total_waste` with `item` as the key.
3) Identify the food item with the maximum waste using `max()` on the `total_waste` dictionary.
4) Return the food item with the highest waste.
**⚠️ Common Mistakes**
- Forgetting to correctly sum the values in the waste list, leading to inaccurate totals.
- Assuming that all food items will have waste records, not handling empty lists or missing items.
- Misunderstanding the input format, which could result in incorrect processing of the waste data.
I-mplement
def find_most_wasted_food_item(waste_records):
# Initialize a dictionary to store the total waste for each food item
total_waste = {}
# Iterate over each food item and its waste list
for item, waste_list in waste_records.items():
# Calculate the total waste for the current food item
total_waste[item] = sum(waste_list)
# Find the food item with the maximum waste
max_waste_item = max(total_waste, key=total_waste.get)
return max_waste_item
Example Usage:
waste_records1 = {
"Apples": [200, 150, 50],
"Bananas": [100, 200, 50],
"Carrots": [150, 100, 200],
"Tomatoes": [50, 50, 50]
}
result = find_most_wasted_food_item(waste_records1)
print(result)
# Output: Carrots
waste_records2 = {
"Bread": [300, 400],
"Milk": [200, 150],
"Cheese": [100, 200, 100],
"Fruits": [400, 100]
}
result = find_most_wasted_food_item(waste_records2)
print(result)
# Output: Bread