입력한 배열 A,B의 크기가 n일 때
배열 S의 최소값을 구하고자 한다면
S = A[0] × B[0] + ... + A[N-1] × B[N-1] 이므로
A와 B배열을 오름차순으로 정렬하고 A의 최소값과 B의 최대값이 곱해지도록
int[] A는 0에서 n-1순서로
int[] B는 n-1에서 0순서로 곱하면 된다.
import java.util.*;
import java.io.*;
public class _1026{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int[] a = new int[n];
int[] b = new int[n];
for(int i=0; i<n; i++){
a[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
for(int i=0; i<n; i++){
b[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(a);
Arrays.sort(b);
int minSum = 0;
for(int i=0; i<n; i++){
minSum += a[i] * b[n-i-1];
}
System.out.println(minSum);
}
}