A 배열의 최솟값과 B 배열의 최댓값을 곱하여 더하는 것이 문제 해결 아이디어이다.
A큐는 오름차순으로 B큐는 내림차순으로 설정하여 각 배열 값을 넣으면 pool로 뺄 때 최솟값 최댓값이 나오게 된다.
최종 코드
import java.util.*;
class Solution
{
public int solution(int []A, int []B)
{
int answer = 0;
PriorityQueue Aqueue = new PriorityQueue();
PriorityQueue Bqueue = new PriorityQueue(Collections.reverseOrder());
// A의 최솟값과 B의 최댓값을 각 큐에 넣기
for (int i : A) {
Aqueue.add(i);
}
for (int i : B) {
Bqueue.add(i);
}
// 최솟값과 최댓값을 빼서 처리
for (int i = 0; i < A.length; i++) {
int min = (int) Aqueue.poll();
int max = (int) Bqueue.poll();
answer += min * max;
}
return answer;
}
}
'코딩 테스트' 카테고리의 다른 글
(Java) 프로그래머스 다음 큰 숫자 (0) | 2021.12.15 |
---|---|
(Java) 프로그래머스 최댓값과 최솟값 (Lv 2) (0) | 2021.12.15 |
(Java) 프로그래머스 키패드 누르기 (0) | 2021.12.03 |
(Java) 프로그래머스 크레인 인형뽑기 게임 (0) | 2021.12.01 |
(Java) 프로그래머스 숫자 문자열과 영단어 (0) | 2021.11.27 |