여러개의 합중에 최대를 찾아야하는 문제라고 생각해야했기에 Greedy 알고리즘을 적용해야 했다는 생각이 들었다. Greedy에서 제일 중요한것은 데이터의 정렬이라고 생각해서
값을 입력받아 오름차순으로 정렬Arrays.sort(weight);
데이터의 갯수가 짝수개이면 index의 0번째와 n번째, 1번째와 n-1번째의 합중에서 제일큰값을 찾으면 될것이라고 생각했으며
for(int i=0; i<n/2; i++){ maxnum = Math.max(maxnum,weight[i]+weight[n-1-i]); }
홀수개일때는 가장 큰값을 초기의 maxnum으로 설정하여 연산에서 배제하였고, 짝수떄와 같은 로직으로 비교한다.
maxnum = weight[n-1]; for(int i=0; i<(n-1)/2; i++){ maxnum = Math.max(maxnum, weight[i]+weight[n-2-i]); }
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
long [] weight = new long[n];
for(int i=0; i<n; i++){
weight[i] = sc.nextLong();
}
Arrays.sort(weight);
long maxnum = 0;
if(n%2==0){
for(int i=0; i<n/2; i++){
maxnum = Math.max(maxnum,weight[i]+weight[n-1-i]);
}
}else{
maxnum = weight[n-1];
for(int i=0; i<(n-1)/2; i++){
maxnum = Math.max(maxnum, weight[i]+weight[n-2-i]);
}
}
System.out.println(maxnum);
}
}