import java.util.Collections;
import java.util.PriorityQueue;
public class programmers {
public static void main(String[] args) throws Exception {
int [] A = {1, 2};
int [] B = {3, 4};
solution(A, B);
}
public static int solution(int []A, int []B)
{
int answer = 0;
/*
Arrays.sort(A);
Integer [] TempB = Arrays.stream(B).boxed().toArray(Integer[]::new);
Arrays.sort(TempB, Collections.reverseOrder());
B = Arrays.stream(TempB).mapToInt(i->i).toArray();
//sort 쓰다가, 질문하기에서 PriorityQueue 로 바꿔보라고 해서 효율성 체크 통과함
*/
//오름차순 정렬
PriorityQueue<Integer> tA = new PriorityQueue<>();
for(int i : A){
tA.offer(i);
}
//내림차순 정렬
PriorityQueue<Integer> tB = new PriorityQueue<>(Collections.reverseOrder());
for(int i : B){
tB.offer(i);
}
for(int i = 0; i < A.length; i++){
answer = answer + tA.poll() * tB.poll();
}
return answer;
}
}
문제 푸는데, sort 쓰니까 계속 효율성 테스트가 안 되길래 이거저거 해보다가...
[질문하기]를 읽어봤더니 우선순위 큐를 쓰라고 해서 우선순위 큐 써서 해결함.
(큐 : 선입선출인데 우선순위큐는 기본 : 오름차순 / reverse 하면 내림차순으로 정렬 가능)
A 는 오름차순으로 정렬
B 는 내림차순으로 정렬
poll 하면 어차피 큐니까 정렬된 순서대로 나온다.
댓글
댓글 쓰기