문제: 연속된 세 수의 최대 합 구하기
다음과 같이 정수들이 저장된 배열이 있습니다.
int[] data = {5, 12, 7, 20, 3, 15, 8, 10};
배열에서 연속된 세 수의 합이 가장 큰 구간을 찾아, 해당 구간의 합과 세 수를 출력하는 프로그램을 작성하세요.
1. 요구사항
for 반복문을 사용하여 배열을 탐색하세요.
연속된 세 수의 합을 계산하세요.
계산된 합이 기존 최댓값보다 크면 최댓값과 시작 인덱스를 갱신하세요.
배열의 길이가 3보다 작은 경우에는 배열의 모든 원소를 합산하고 안내 메시지를 출력하세요.
최댓값을 갖는 연속된 세 수를 출력하세요.
최대 합을 갖는 구간이 여러 개라면 가장 먼저 발견한 구간을 출력하세요.
2. 실행 결과
연속된 세 수의 합이 가장 큰 값: 39
연속된 세 수: 12 7 20
3. 소스
public class Day2 {
public static void main(String[] args) {
int[] data = {5, 12, 7, 20, 3, 15, 8, 10};
int startIndex = 0;
int dataLength = data.length;
int maxSum = 0;
if(dataLength < 3){
System.out.println("배열의 길이가 3보다 작습니다.");
for(int i = 0; i < dataLength; i++){
maxSum += data[i];
}
startIndex = 0;
} else {
for (int i = 0; i < data.length; i++) {
if (i + 2 < dataLength) {
int sum = data[i] + data[i + 1] + data[i + 2];
if (sum > maxSum) {
maxSum = sum;
startIndex = i;
}
}
}
}
System.out.println("연속된 세 수의 합이 가장 큰 값: " + maxSum);
System.out.print("연속된 세 수: ");
for (int i = startIndex; i < startIndex + 3 && i < dataLength; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
}