프로그래머스 최솟값 만들기 (Java,자바)

jonghyukLee·2023년 3월 2일

이번에 풀어본 문제는
프로그래머스 최솟값 만들기 입니다.

📕 문제 링크

❗️코드

import java.util.*;
class Solution
{
    public int solution(int []A, int []B)
    {
        int answer = 0;
        int size = A.length;
        Queue<Integer> lowQ = new PriorityQueue<>();
        Queue<Integer> maxQ = new PriorityQueue<>(Collections.reverseOrder());
        for (int i = 0; i < size; i++) {
            lowQ.add(A[i]);
            maxQ.add(B[i]);
        }

        while(!lowQ.isEmpty()) {
            answer += (lowQ.poll() * maxQ.poll());
        }

        return answer;
    }
}

📝 풀이

한쪽 큐에서 가장 작은 수를 고르고, 반대쪽 큐에서는 가장 큰 값을 고르면 적절히 분배돼서 최솟값을 얻을 수 있을거라 생각했습니다. (확실하진 않습니다)
따라서 우선순위 큐를 활용하여, 오름차순, 내림차순 두 큐를 만들고 두 배열을 모두 담아 순차적으로 탐색하며 연산을 수행해주면 해결할 수 있습니다.

profile
머무르지 않기!

0개의 댓글