반응형
https://www.acmicpc.net/problem/1912
◎ 문제풀이
n까지의 정수 중 최대의 연속된 합을 구하는 문제이다.
n까지의 정수 중에 연속된 최대의 합은 두 가지 경우가 있다.
1) 연속된 합이 n까지 연속되는 경우
2) 연속된 합이 n까지 연속되지 않은 경우
2가지 경우 중 최대값을 구하면 된다.
◎ 코드
#BOJ1912 연속합 (dp)
import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int,input().split()))
dp = [ [0,0] for _ in range(n) ]
dp[0][0] = arr[0] # n자리의 최댓값
dp[0][1] = arr[0] # n까지 연속된 경우의 최댓값
for i in range(1,n) :
tmp = dp[i-1][1] + arr[i]
dp[i][1] = arr[i] if arr[i] > tmp else tmp
dp[i][0] = max(dp[i-1][0],dp[i][1]) #두 가지 경우 중 최댓값 구하기
print(dp[n-1][0])
반응형
'문제풀이 > DP' 카테고리의 다른 글
[PS] BOJ1149 RGB거리 ( DP ) With Java (0) | 2023.07.10 |
---|---|
[PS] BOJ2225 합분해 ( dp ) With python (0) | 2023.07.06 |
[PS] BOJ10844 쉬운 계단 수 ( DP ) With 파이썬, JAVA (0) | 2023.06.28 |
[PS] BOJ159990 1,2,3 더하기 5 ( DP ) With 파이썬 (0) | 2023.06.27 |
[CodingTest] BOJ11052 카드 구매하기 ( DP ) With Python (0) | 2023.06.16 |