36 lines
702 B
Python
36 lines
702 B
Python
from lib import get_data
|
|
|
|
data = get_data(__file__)
|
|
|
|
|
|
def max_joltage(xs: str, target_len: int) -> int:
|
|
def dynamic(xs: str) -> dict[int, str]:
|
|
if len(xs) == 0:
|
|
return {0: ""}
|
|
|
|
rs = dynamic(xs[1:])
|
|
for i in range(target_len, 0, -1):
|
|
if not (i - 1) in rs:
|
|
continue
|
|
nv = int(xs[0] + rs[i - 1])
|
|
if not i in rs:
|
|
rs[i] = str(nv)
|
|
elif nv > int(rs[i]):
|
|
rs[i] = str(nv)
|
|
return rs
|
|
|
|
rs = dynamic(xs)
|
|
return int(rs[target_len])
|
|
|
|
|
|
r1 = 0
|
|
r2 = 0
|
|
for line in data.splitlines():
|
|
r1 += max_joltage(line, 2)
|
|
r2 += max_joltage(line, 12)
|
|
|
|
|
|
print(r1)
|
|
print(r2)
|
|
|