백준 1912번 : 연속합 바로가기
연속적인 합의 크기를 구하는 문제이므로 dp 배열에 연속합의 결과를 담아야한다.
점화식을 if문으로 표현하면,
if(dp[i-1]+arr[i]>=arr[i])
dp[i]=dp[i-1]+arr[i];
else
dp[i]=arr[i];
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int arr[]=new int[n];
StringTokenizer st = new StringTokenizer(br.readLine()," ");
for(int i=0; i<n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int dp[]=new int[n];
dp[0]=arr[0];
int max=dp[0];
for(int i=1; i<n; i++){
if(dp[i-1]+arr[i]>=arr[i])
dp[i]=dp[i-1]+arr[i];
else
dp[i]=arr[i];
if(max<=dp[i])
max=dp[i];
}
System.out.println(max);
}
}