
- 입력한 숫자들을 sum에 더해주고
Math.max()를 이용해서 현재까지 값들을 이용해서 최대값을 구별한다.- 모든 원소가 음수일 경우에는 정렬에서 가장 첫 번째 수를 출력한다.
// 백준 Silver2 - 1912(연속합)
// 문제링크: https://www.acmicpc.net/problem/1912
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int sum = 0;
int ans = 0;
int arr[] = new int[n];
for(int i=0; i<n; i++) {
arr[i] = sc.nextInt();
}
for(int i=0; i<n; i++) {
sum += arr[i];
if(sum<0)
sum = 0;
ans = Math.max(ans,sum);
}
if(ans==0) { // 모든 원소가 음수인 경우
Arrays.sort(arr);
System.out.println(arr[arr.length-1]);
}else {
System.out.println(ans);
}
}
}
처음에는 어떻게 해야 될지 생각을 하다가 수들을 더해주다가 현재 더한 숫자들을 활용해서 최대값을 구하면 되는 것을 알게 되고 해결할 수 있었다.