
이 문제는 쉽게 해결될 줄 알았는데 풀이를 보고도 어렵다고 느꼈다.

결론부터 보자면, dp.append(max(dp[i-1] + data[i], data[i])) 이 부분은 다시 봐도 정확히 이해가 되지 않는다.
저 한줄의 코드가 각 항 마다, 이전까지 더한 값이 더 크냐 or 현재 값이 더 크냐를 의미한다.
하지만 저것이 어떻게 모든 경우의 수를 고려해준 것일까??

dp[i] = max(dp[i-1]+data[i], data[i])에서 dp[i-1]은 이전까지 구한 값 중 최대의 값을 만들어낸 값이다.
그 전까지 더했을 때, 더 이득이 되는 것만 값을 더했기 때문이다.
그러한 값과 현재의 값을 더했을때와 더하지 않았을 떄의 값을 비교해서 최대값을 구하는 것이다.
'개발 > 알고리즘' 카테고리의 다른 글
[BOJ] 퇴사_14501 (0) | 2021.01.15 |
---|---|
[python] 문자열 다루기 (0) | 2021.01.14 |
[BOJ] 포도주 시식_2156 (0) | 2021.01.12 |
[BOJ] 계단 오르기_2579 (0) | 2021.01.10 |
[BOJ] RGB거리_1149 (0) | 2021.01.10 |