diff --git a/internal/2025/DayThree/code.go b/internal/2025/DayThree/code.go index ac15e53..0b72197 100644 --- a/internal/2025/DayThree/code.go +++ b/internal/2025/DayThree/code.go @@ -29,11 +29,13 @@ func PartOne(data [][]int) int { total := 0 for _, bank := range data { maxAfter := make([]int, len(bank)) + for idx := len(bank) - 2; idx >= 0; idx-- { maxAfter[idx] = max(maxAfter[idx+1], bank[idx+1]) } maxJoltage := 0 + for idx := 0; idx < len(bank)-1; idx++ { joltage := bank[idx]*10 + maxAfter[idx] maxJoltage = max(maxJoltage, joltage) @@ -44,5 +46,27 @@ func PartOne(data [][]int) int { } func PartTwo(data [][]int) int { - return 0 + total := 0 + for _, bank := range data { + var joltage int + start := 0 + + for position := range 12 { + remaining := 12 - position - 1 + maxIdx := start + maxValue := bank[start] + + for idx := start; idx < len(bank)-remaining; idx++ { + if bank[idx] > maxValue { + maxValue = bank[idx] + maxIdx = idx + } + } + + joltage = joltage*10 + maxValue + start = maxIdx + 1 + } + total += joltage + } + return total }