Algorithm/ProjectEuler

[ProjectEuler] 프로젝트 오일러 Problem 18

HAS3ONG 2019. 7. 10. 15:26
Field = [
    ['75'],
    ['95', '64'],
    ['17', '47', '82'],
    ['18', '35', '87', '10'],
    ['20', '04', '82', '47', '65'],
    ['19', '01', '23', '75', '03', '34'],
    ['88', '02', '77', '73', '07', '63', '67'],
    ['99', '65', '04', '28', '06', '16', '70', '92'],
    ['41', '41', '26', '56', '83', '40', '80', '70', '33'],
    ['41', '48', '72', '33', '47', '32', '37', '16', '94', '29'],
    ['53', '71', '44', '65', '25', '43', '91', '52', '97', '51', '14'],
    ['70', '11', '33', '28', '77', '73', '17', '78', '39', '68', '17', '57'],
    ['91', '71', '52', '38', '17', '14', '91', '43', '58', '50', '27', '29', '48'],
    ['63', '66', '04', '68', '89', '53', '67', '30', '73', '16', '69', '87', '40', '31'],
    ['04', '62', '98', '27', '23', '09', '70', '98', '73', '93', '38', '53', '60', '04', '23'],
]

dp = [[75]]
for i in range(1, 15):
    arr = []

    for j in range(i+1):
        if j == 0:
            arr.append(dp[i-1][j] + int(Field[i][j]))
        elif j == i:
            arr.append(dp[i-1][j-1] + int(Field[i][j]))
        else:
            arr.append(max(dp[i-1][j-1] + int(Field[i][j]), dp[i-1][j] + int(Field[i][j])))
    dp.append(arr)

print(max(dp[14]))

출처

http://euler.synap.co.kr/prob_detail.php?id=18