본문 바로가기

알고리즘구현능력/문제해결능력

[java] 백준/1912 연속합

위 문제의 유형을 말하자만 다이나믹이다..

연속된 숫자를 선택해서 가장 큰합을 구하는 문제다

10 -4 = 6 이고 3 1 5 6 까지 다 더하게 되면... 21이다 하지만

-35까지 더하면 -14가 된다.. 그뒤에도 더하게되면 -2인데 그럴빠에는 다시 12부터 시작하는게 더큰 합을 구하는 것이다.

한마디로 기존에 있던 값보다 너무 큰 마이너스 값을 더하게 될경우엔 새롭게 건너뛰에 양수때부터 시작하는게 좋다

식을 정하자면 이렇게 나온다 dp[n] = Math(dp[n-1]+num[n], num[n]) 

그렇게 dp가 1에서부터 n까지의 경우를 구한뒤에 최대값을 출력하면 끝이다.