728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12941
728x90
메모리: 53 MB, 시간: 2.15 ms
사용 알고리즘: 정렬
최솟값을 구해야 하므로 A에서 뽑을 수 있는 가장 작은 수는 B에서 뽑을 수 있는 가장 큰 수와 곱하는 것이 유리하다.
따라서 두 배열을 오름차순으로 정렬한 후에, A는 맨 앞부터 B는 맨 뒤부터 하나씩 곱하여 더해준다.
import java.util.*;
class Solution
{
public int solution(int []A, int []B)
{
int answer = 0;
// 두 배열 정렬
Arrays.sort(A);
Arrays.sort(B);
// A 배열에서는 현재 가능한 가장 작은 수
// B 배열에서는 현재 가능한 가장 큰 수를 골라 곱함
for(int i = 0; i < A.length; i++) {
answer += A[i] * B[B.length - 1 - i];
}
return answer;
}
}
728x90
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스, 12954] x만큼 간격이 있는 n개의 숫자 (java) (0) | 2024.08.04 |
---|---|
[프로그래머스, 43162] 네트워크 (java) (4) | 2024.08.01 |
[프로그래머스, 12925] 문자열을 정수로 바꾸기 (java) (0) | 2024.08.01 |
[프로그래머스, 43105] 정수 삼각형 (java) (0) | 2024.07.31 |
[프로그래머스, 12909] 올바른 괄호 (java) (0) | 2024.07.31 |