처음에 dp정의 자체를 잘못 설정했다.
처음 내 아이디어는 dp[i]를 i번째까지 최대 연속 합으로 설정하였으나,
이중for문에 걸려 시간 초과 문제가 발생했다.
이후 구글링을 통해 다른 아이디어를 찾아보니
dp[i]를 i번째까지 왔을 때, arr[i]와 dp[i-1] + arr[i] 중 최댓값으로 설정하는 정의를 통해 해결하는 방법을 찾았다.
처음엔 잘 이해가 가지 않았으나,
찬찬히 생각해보니 이와 같이 dp를 채우고 나중에 출력 시 전체에 max값을 출력 해 주면 되는 것이였다.
# n 입력
n = int(input())
# arr 입력
arr = list(map(int, input().split()))
# dp 설계
dp = [
0 for _ in range(n)
]
# 초기설정
dp[0] = arr[0]
# dp 채워넣기
for i in range(1, n):
dp[i] = max(arr[i], dp[i-1] + arr[i])
# 출력
print(max(dp))
'Algorithm(BOJ, Python) > Dynamic Programing' 카테고리의 다른 글
[백준_1003] 피보나치함수 python (0) | 2022.07.05 |
---|---|
[백준_9461] 파도반 수열 python (0) | 2022.07.05 |
[백준_11053] 가장 긴 증가하는 부분수열 python (0) | 2022.07.04 |
[백준_9095] 1,2,3 더하기 python (0) | 2022.07.03 |
[백준_9465] 스티커 python (0) | 2022.07.03 |