풀이)
정렬을 통해 각 요소를 곱하는 것으로 빠르게 풀 수 있다.
내 코드)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int[] A = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
A[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(A); // A를 오름차순으로 정렬
Integer[] B = new Integer[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
B[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(B, Comparator.reverseOrder()); // B를 내림차순으로 정렬
int ans = 0;
for (int i = 0; i < N; i++) { // A의 가장 작은 값과 B의 가장 큰 값을 곱해서 더해 나감.
ans += A[i] * B[i];
}
bw.write(ans + "\n");
bw.flush();
bw.close();
br.close();
}
}