- 코드
정답 코드 : 기존 연속합 문제에서 다른 점은 최소값 수 하나를 제거할 수 있다는 점! 그래서 기존 연속합 코드에서 DP하나를 더 추가해 최소값을 하나 제외했을 때의 최대값도 유지시켜 주었다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
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[] array = new int[n];
int [] dp = new int[n];
int [] dp2 = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0;i<n;i++)
array[i] = Integer.parseInt(st.nextToken());
dp[0] = array[0];
dp2[0] = array[0];
int max = array[0];
for(int i=1; i<n; i++){
dp[i] = Math.max(dp[i-1] + array[i], array[i]);
dp2[i] = Math.max(dp2[i-1] + array[i], dp[i-1]);
max = Math.max(max, Math.max(dp[i],dp2[i]));
}
System.out.println(max);
}
}
'algorithm' 카테고리의 다른 글
[JAVA] 백준 2502번 : 떡 먹는 호랑이 (0) | 2020.09.07 |
---|---|
[JAVA] 백준 3745번 : 오름세 (0) | 2020.09.07 |
[JAVA] 백준 2195번 : 문자열 복사 (0) | 2020.09.03 |
[JAVA] 백준 11401번 : 이항 계수 3 (0) | 2020.09.03 |
[JAVA] 백준 1300번 : K 번째 수 (0) | 2020.09.02 |