최솟값 만들기

구해야 하는 것

  • 배열 A, B가 주어질 때 최종적으로 누적된 최솟값을 return

자료

  • 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한다.
  • 위 과정을 배열의 길이만큼 반복한다.
  • 두 수를 곱한 값을 누적하여 더한다.
  • 최종적으로 누적된 값이 최소가 되도록 만들어야 한다.
  • 한번 뽑은 숫자는 또 뽑을 수 없다.

조건

  • A의 길이, B의 길이 ≤ 1,000
  • A[i], B[i] ≤ 1,000

계획

  • 배열들을 정렬한다.
  • A는 맨 앞부터, B는 맨 뒤부터 돌면서 숫자들을 곱한다.
  • 곱한 값을 결과에 누적한다.

실행

public class Solution {
    public int solution(int[] a, int[] b) {
        Arrays.sort(a);
        Arrays.sort(b);

        int answer = 0;
        for(int i = 0; i < a.length; i++) {
            answer += a[i] * b[b.length - i - 1];
        }

        return answer;
    }
}