본문 바로가기
알고리즘

백준 13398 연속합2 파이썬 Python py (재귀 풀이)

by 치우치지않는 2025. 7. 3.

13398번 풀이를 블로그에 찾아보니, 대부분 반복문 DP 풀이만 나오는데 나는 개인적으로 재귀 DP 가 더 편해서 재귀로 풀어 보았다. 

import sys

sys.setrecursionlimit(10**6)

N = int(input())

arr = list(map(int, input().split()))

dp = [[float('-inf')] * 2 for _ in range(len(arr))]


def solve(i, c):

    if dp[i][c] != float('-inf'):
        return dp[i][c]
    
    if i == 0:
        if c == 0:
            dp[i][c] = arr[i]
            return dp[i][c]
        else:
            dp[i][c] = float('-inf')
            return dp[i][c]

    if c == 0:
        dp[i][c] = max(solve(i-1, 0) + arr[i], arr[i])

    if c == 1:
        dp[i][c] = max(solve(i-1, 1) + arr[i], solve(i-1, 0))

    return dp[i][c]


maxSum = float('-inf')
solve(N-1, 0)
solve(N-1, 1)

for i in range(len(arr)):
    tempMax = max(dp[i][0], dp[i][1])
    maxSum = max(tempMax, maxSum)


print(maxSum)​

'알고리즘' 카테고리의 다른 글

백준 9252 파이썬 python 재귀 풀이  (3) 2025.08.02
백준 17141 파이썬  (1) 2025.07.16
[프로그래머스 / Python] 과일 장수  (0) 2023.11.07
[BOJ / 12933 / Python] 오리  (1) 2023.09.22
[BOJ / 1913 / Python] 달팽이  (0) 2023.09.20

댓글