길이가 N인 배열 A와 B의 원소값을 곱하여 만들어지는
함수 S의 최소의 값을 구하는 문제이다
단, S의 최소값을 구하기 위해 A의 수는 재배열 할 수 있지만 B값은 재배열 할 수 없다.
S의 최소값을 만들기 위해서는 a[]의 가장 큰 수, b[]의 가장 작은 수를 서로 매칭하여 곱해야한다.
따라서 a[]와 b[]를 오름차순하여 a의 첫 인덱스와 b의 마지막 인덱스를 곱하여 반복하거나
a를 오름차순, b를 내림차순으로 하여 같은 인덱스끼리 곱하여 sum을 구한다.
import java.util.Arrays;
import java.util.Scanner;
public class Num1026 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[] = new int[n];
int b[] = new int[n];
for(int i=0; i<n; i++) {
a[i] = sc.nextInt();
}
for(int i=0; i<n; i++) {
b[i] = sc.nextInt();
}
Arrays.sort(a);
Arrays.sort(b);
int sum = 0;
for(int i=0; i<n; i++) {
sum += a[i] * b[n-i-1];
}
System.out.println(sum);
}
}
참고 :
출처 : https://www.acmicpc.net/problem/1026