
나의 풀이
import java.util.*;
class Solution
{
public int solution(int []A, int []B)
{
int answer = 0;
Arrays.sort(A); // 1
Arrays.sort(B);
for (int i = 0; i < A.length; i++) { // 2
for (int j = A.length - i - 1; j >= 0; j--) {
answer += A[i] * B[j];
break;
}
}
return answer;
}
}
과정
- A, B를 오름차순으로 정렬
- A는 정순, B는 역순으로 곱한 후, answer에 더하기(한쪽 배열에선 작은 값부터, 한쪽 배열에선 큰 값부터 곱한 후 더한것이 최솟값이다)
다른 사람 풀이
import java.util.Arrays;
class TryHelloWorld
{
public int getMinSum(int []A, int []B)
{
Arrays.sort(A);
Arrays.sort(B);
int length = A.length;
int answer = 0;
for (int i = 0; i < length; i++) {
answer += A[i] * B[length - 1 - i];
}
return answer;
}
}
- for문을 중첩하지않고, length - 1 - i로 선언한 것이 참신하다