A와 B를 곱해 최솟값을 구하기 위해서는
B배열 가장 큰 숫자의 인덱스에 A배열 중 가장 작은 숫자를,
B배열 가장 작은 숫자의 인덱스에 A배열 중 가장 큰 숫자를 위치시킨다.
따라서 A를 오름차순으로, B를 내림차순으로 정렬하여 곱하면 최솟값을 구할 수 있다.
package day_200816;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
// 보물
public class Main {
public static void main(String[] args) throws Exception {
int answer = 0;
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
ArrayList<Integer> A = new ArrayList<Integer>();
ArrayList<Integer> B = new ArrayList<Integer>();
for(int i=0; i<N; i++) A.add(sc.nextInt());
for(int i=0; i<N; i++) B.add(sc.nextInt());
Collections.sort(A);
Collections.sort(B);
Collections.reverse(B);
for(int i=0; i<N; i++) answer += A.get(i) * B.get(i);
System.out.println(answer);
}
}