코드: https://github.com/kgh128/Problem-Solving/blob/main/src/Baekjoon/p1026.java
S의 값을 가장 작게 만드려면 A에서 값이 작은 원소와 B에서 값이 큰 원소를 곱하고, A에서 값이 큰 원소와 B에서 값이 작은 원소를 곱해야 한다. 그러므로 A 배열과 B 배열을 서로 반대로 정렬하면 된다.
A 배열: 오름차순 정렬B 배열: 내림차순 정렬Integer[] A = new Integer[N];
Integer[] B = new Integer[N];
Arrays.sort(A);
Arrays.sort(B, Collections.reverseOrder());
내림차순으로 정렬하기 위해 sort()의 두번째 인자로 Collections.reversOrder()를 전달한다. Collections.reverseOrder()는 Comparator 객체이므로 이를 통해 비교할 때는 int가 아니라 Integer를 사용해야 한다. 따라서 A와 B 모두 Integer 배열로 만들었다.
S의 최솟값 계산반복문을 돌면서 정렬한 A와 B 배열의 원소들을 곱해서 더한다.
for (int i = 0; i < N; i++) {
S += A[i] * B[i];
}