diff --git a/main.py b/main.py index f6264ef..8a8886f 100644 --- a/main.py +++ b/main.py @@ -1,28 +1,30 @@ batteries = [] with open("day3/input.txt") as file: - lines = file.readlines() - for line in lines: - line = line.strip("\n") - data = [] - for joltage in line: - data.append(int(joltage)) - batteries.append(data) + for line in file: + batteries.append([int(c) for c in line.strip()]) -joltageSum = 0 + +def max_12_digit_number(digits): + target_len = 12 + to_remove = len(digits) - target_len + stack = [] + + for d in digits: + while stack and to_remove > 0 and stack[-1] < d: + stack.pop() + to_remove -= 1 + stack.append(d) + + # Falls noch nicht genug entfernt wurde (am Ende nur große Zahlen) + return stack[:target_len] + + +total = 0 for bank in batteries: - tenthPlace = max(bank) - onethPlace = 0 - indexOfMax = bank.index(tenthPlace) - if(indexOfMax == len(bank)-1): - onethPlace = tenthPlace - tenthPlace = max(bank[:-1]) - else: - onethPlace = max(bank[indexOfMax+1::]) - - joltageBank = int(f"{tenthPlace}{onethPlace}") - print(f"Bank {batteries.index(bank)+1} joltage is {joltageBank}") - joltageSum+=joltageBank + best_digits = max_12_digit_number(bank) + joltage = int("".join(map(str, best_digits))) + total += joltage -print(joltageSum) \ No newline at end of file +print(total) \ No newline at end of file