Coding Test/프로그래머스
[200901] 최솟값만들기 - 연습문제(level2)
csmoon1010
2020. 9. 1. 20:06
1. 문제 이해
- 배열 A, B : 같은 길이. 자연수로 이루어짐
- A,B에서 각각 한 개씩, 한 번씩 곱해 구한 누적합의 최솟값 return
2. 전략
(1) 규칙
: (큰 값) X (큰 값)을 하면 값이 더 커짐
→ 작을수록 큰 값과 곱해지도록 해야함
→ 두 배열을 각각 오름차순, 내림차순 sort한 후 차례로 곱하기
(2) sort
- Arrays.sort()를 이용해 각각 오름차순으로 sort
- A는 0번 index부터, B는 size-2번 index부터 차례로 곱하기
3. 참고 사항
- Arrays.sort(arr, Collections.reverseOrder()), Arrays.sort(arr, Comparator.reverseOrder())
: int 배열에 대해서는 적용이 불가. String 배열, ArrayList 컬렉션에 적용해야 이용 가능!
+a> PriorityQueue 구현 시 이용함 - PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
4. 코드
import java.util.*;
class Solution
{
public int solution(int []A, int []B)
{
int answer = 0;
Arrays.sort(A);
Arrays.sort(B);
int size = B.length;
for(int i = 0; i < size; i++){
answer += A[i]*B[size-i-1];
}
return answer;
}
}