반응형

단, B에 있는 수는 재배열하면 안된다. 라는 문구가 있는데 실제 구현을 할때는 정렬로 재배열을 해줘야 한다.

예를 들어 1 2 3 4 5인 A 배열과 1 3 5 7 9 인 B 배열이 있을 때 가장 작은 수가 나올 경우는 

서로 역방향이 되어 큰값과 작은값이 곱해질 때이다. 정확히 1*9 + 2*7 + 3*5 + 4*3 + 5*1인 경우이다.

결국, A 배열과 B배열을 정렬한 다음 A와 B의 역방향으로 곱해주면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
 
        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 - 1 - i];
        }
        System.out.println(sum);
 
    }
}



반응형

+ Recent posts