https://school.programmers.co.kr/learn/courses/30/lessons/12941
문제 분류 : 코딩테스트 연습 > 연습문제 > 최솟값 만들기
난이도 : 2
시간 초과 코드
우선순위큐를 사용했다.
import java.util.*;
class Solution{
public int solution(int []A, int []B){
int answer = 0;
PriorityQueue<Integer> pq1 = new PriorityQueue<>((o1,o2)->o1-o2);
PriorityQueue<Integer> pq2 = new PriorityQueue<>((o1,o2)->-(o1-o2));
for(int target : A){
pq1.add(target);
}
for(int target : B){
pq2.add(target);
}
while(!pq1.isEmpty()){
answer += pq1.poll() * pq2.poll();
}
return answer;
}
}
효율성 테스트 맨 마지막 케이스에서 시간 초과...
정답 코드
배열 정렬을 통해서 시간초과 해결
import java.util.*;
class Solution{
public int solution(int []A, int []B){
int answer = 0;
Arrays.sort(A);
Arrays.sort(B);
int cnt = B.length - 1;
for(int i = 0; i < A.length; i++){
answer += A[i] * B[cnt];
cnt--;
}
return answer;
}
}
'Algorithm > Programmers Java' 카테고리의 다른 글
Java 프로그래머스 최댓값과 최솟값 (0) | 2024.02.29 |
---|---|
Java 프로그래머스 게임 맵 최단거리 (0) | 2024.02.29 |
Java 프로그래머스 N개의 최소공배수 (2) | 2024.02.29 |
Java 프로그래머스 짝지어 제거하기 (0) | 2024.02.29 |
Java 프로그래머스 카카오프렌즈 컬러링북 (0) | 2024.02.28 |