-
프로그래머스 최솟값 만들기개발/코딩테스트 2024. 9. 14. 13:08
문제
길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다.
배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.)A [1, 4, 2] B [5, 4, 4] answer 29 A [1,2] B [3,4] answer 10
문제풀이
배열 하나를 오름차순 , 하나를 내림차순을 한후 각 row를 곱한 후 더하면 최솟값을 구할 수 있다.
정렬을 위해 PriorityQueue를 이용한다.
import java.util.*; public int solution(int []A, int []B) { int answer = 0; PriorityQueue<Integer> Aqueue = new PriorityQueue<>(); PriorityQueue<Integer> Bqueue = new PriorityQueue<>(Collections.reverseOrder()); for(int i=0; i <A.length; i++){ Aqueue.offer(A[i]); Bqueue.offer(B[i]); } while(!Aqueue.isEmpty()){ answer += Aqueue.poll()*Bqueue.poll(); } return answer; }
'개발 > 코딩테스트' 카테고리의 다른 글
프로그래머스 메뉴리뉴얼 (1) 2024.09.25 프로그래머스 개인정보 수집 유효기간 (0) 2024.09.19 프로그래머스 올바른 괄호 (0) 2024.09.13 프로그래머스 여행경로 (1) 2024.09.12 프로그래머스 단어변환 (0) 2024.09.10