연속합(1912)
가장 큰 연속합을 구하는 문제
문제
입력
출력
예제 입력
10
10 -4 3 1 5 6 -35 12 21 -1예제 출력
33예제 입력2
예제 출력2
예제 입력3
예제 출력3
풀이 -> dp배열을 2차원으로 생각해서 풀어봤는데 메모리초과
풀이
Last updated
가장 큰 연속합을 구하는 문제
10
10 -4 3 1 5 6 -35 12 21 -133Last updated
10
2 1 -4 3 4 -4 6 5 -5 1145
-1 -2 -3 -4 -5-1import java.io.*;
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];
int dp[][] = new int[N][N];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<N; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
for(int i=0; i<N; i++){
dp[i][i] = arr[i];
for(int j=i+1; j<N; j++){
dp[i][j] = dp[i][j-1]+arr[j];
}
}
int max = 0;
for (int i = 0; i < dp.length; i++) {
for(int j=0; j<dp.length; j++){
max = Math.max(max, dp[i][j]);
}
}
System.out.println(max);
}
}import java.io.*;
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];
int dp[] = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<N; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
dp[0] = arr[0];
int max = arr[0];
for(int i=1; i<N; i++){
//들어가는 값 vs 이전까지의 합+들어가는 값
dp[i] = Math.max(arr[i], dp[i-1]+arr[i]);
max = Math.max(max, dp[i]);
}
System.out.println(max);
}
}