성능 요약
메모리: 메모리: 52 MB, 시간: 1.57 ms - Answer Code1
구분
코딩테스트 연습 > 연습문제
Answer Code1(23.02.04)
import java.util.Arrays;
class Solution
{
public int solution(int []A, int []B)
{
int answer = 0;
// 기본 정렬 조건 : 오름차순
Arrays.sort(A);
Arrays.sort(B);
for(int i = 0; i < A.length; i++) {
answer += A[i] * B[B.length - 1 - i];
}
return answer;
}
}
문제 풀이
-
양쪽에서 각각 한개의 숫자를 뽑아 곱한 값을 누적하였을 때 한 쪽의 최댓값과 다른 쪽의 최솟값을 곱하는 경우 누적값을 최소로 구할 수 있다
-
정렬을 하기 위해서는
import java.util.Arrays;
선언해야 한다. -
Arrays.sort()
: 기본 정렬 조건이 오름차순 이다.
-
-
따라서 A와 B 배열을 정렬하여 한 쪽의 최댓값과 다른 쪽의 최솟값을 곱해 누적하면 최소값을 구할 수 있다
Review
-
최솟값을 구하는 조건을 바로 떠올리지 않아서 시간이 좀 걸렸지만, 조건만 알 수 있으면 바로 풀 수 있는 문제였다.
-
최솟값을 구하는 조건에 대해서 잘 기억해두자.