import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws Exception {
Scanner s = new Scanner(System.in);
int N = s.nextInt();
int[] A = new int[N];
int[] B = new int[N];
for (int i = 0; i < N; i++) {
A[i] = s.nextInt();
}
for (int i = 0; i < N; i++) {
B[i] = s.nextInt();
}
Arrays.sort(A);
Arrays.sort(B);
int sum = 0;
for (int i = 0; i < N; i++) {
sum += A[i] * B[N-1-i];
}
System.out.println(sum);
}
}
정수 배열 A, B에 입력을 받고 Arrays.sort();
으로 정렬해준 후,
A의 인덱스는 0부터 증가, B의 인덱스는 N-1부터 감소되게 해서 원소끼리 곱해 주면 S의 최솟값을 구할 수가 있다.
A를 오름차순, B를 내림차순으로 정렬하고 0부터 N까지 인덱스까리 곱해도 된다.
sum 값이 최소가 되려면 최솟값이랑 최댓값이랑 곱해줘야 하는 게 관건
근데 문제에서는 B는 재배열하면 안 된다고 했는데... 이건 나중에 해결
배열이나 리스트 오름차순 정렬 ➡️ java.util.Arrays 클래스의 sort() 메서드를 사용.
Arrays 클래스는 배열의 복사, 항목 정렬, 검색과 같은 배열 조작 기능을 가지고 있다.