50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
"""
|
|
--- Part Two ---
|
|
|
|
By the time you calculate the answer to the Elves' question, they've
|
|
already realized that the Elf carrying the most Calories of food might
|
|
eventually run out of snacks.
|
|
|
|
To avoid this unacceptable situation, the Elves would instead like to
|
|
know the total Calories carried by the top three Elves carrying the
|
|
most Calories. That way, even if one of those Elves runs out of snacks,
|
|
they still have two backups.
|
|
|
|
In the example above, the top three Elves are the fourth Elf (with
|
|
24000 Calories), then the third Elf (with 11000 Calories), then the
|
|
fifth Elf (with 10000 Calories). The sum of the Calories carried by
|
|
these three elves is 45000.
|
|
|
|
Find the top three Elves carrying the most Calories. How many Calories
|
|
are those Elves carrying in total?
|
|
"""
|
|
|
|
|
|
def main():
|
|
with open("input.txt", "r", encoding="utf-8") as f:
|
|
calories_per_elf = [0]
|
|
|
|
for line in f:
|
|
if line.strip():
|
|
calories_per_elf[-1] += int(line.strip())
|
|
else:
|
|
calories_per_elf.append(0)
|
|
continue
|
|
|
|
total_highest_calories = 0
|
|
highest_calories = max(*calories_per_elf)
|
|
index_of_highest = calories_per_elf.index(highest_calories)
|
|
i = 3
|
|
while i > 0:
|
|
total_highest_calories += calories_per_elf[index_of_highest]
|
|
calories_per_elf.pop(index_of_highest)
|
|
highest_calories = max(*calories_per_elf)
|
|
index_of_highest = calories_per_elf.index(highest_calories)
|
|
i -= 1
|
|
|
|
print(f"The three elves carrying the most calories together have {total_highest_calories} calories")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|