공백 없이 숫자가 연속되어 쓰여 있다.
당신은 이 숫자를 적절히 끊어서 N개의 1자리 혹은 2자리 수로 나누어야 한다.
어떻게 나누어야 N개의 수의 합이 가장 커질까?
하나의 수로 보았을 때 200,000,000 이하인 수열이 주어진다.
138947192
수열을 일의 자리 혹은 십의 자리 수로 끊어 얻은 수들의 최대 합을 출력한다.
296
(그림이 조금 그렇기는 한데) 1234로 예시를 들고 하나씩 나눠서 케이스를 나눠봤을때 가장 큰값끼리 더해주는 방식으로 진행하였다.
int(''.join(numbers[i - 2:i])))
def find_max_sum(numbers):
n = len(numbers)
dp = [0] * (n + 1)
dp[1] = int(numbers[0])
# 1의 자리로 나누는 경우와 2의자리로 나누는 경우의 max값을 찾아가도록 구현
for i in range(2, n + 1):
dp[i] = max(dp[i - 1] + int(numbers[i - 1]), dp[i - 2] + int(''.join(numbers[i - 2:i]))) # 변환 시 오류가 나서 합쳐서 변환하는 것으로 변경
return dp[n]
# 입력 예시
numbers = list(input())
result = find_max_sum(numbers)
print(result)