코딩 테스트/자바
[프로그래머스 / 자바 / Lv.2] 12941 최솟값 만들기
HHRR
2024. 7. 11. 13:47
문제
풀이
두 배열의 각 원소의 곱의 누적합이 최소가 되도록 하는 문제다.
각 원소의 곱의 누적합이 최소가 되려면, 오름차순 정렬한 배열과 내림차순 정렬한 배열의 각 원소를 곱해준 후에 누적합을 구해주면 최솟값이 된다.
1. 자바에서는 int[] 배열을 내림차순으로 정렬하지 못하므로, 일단 각각 A, B 배열을 오름차순 정렬을 해준다.
2. A배열은 원소의 시작인 i 부터, B 배열은 원소의 끝인 (len-1)-i 부터 역순으로 원소를 곱해주고, answer에 합을 누적한다.
class Solution{
public int solution(int []A, int []B){
int len = A.length;
int answer = 0;
Arrays.sort(A);
Arrays.sort(B); // int[] 배열은 내림차순 정렬이 안됨
for(int i=0; i<len; i++){
answer += A[i] * B[(len-1)-i]; // B배열은 역순으로 곱해주기
}
return answer;
}
}