Leetcode

[Leetcode] 2542. Maximum Subsequence Score

맑은 눈의 우사미 2023. 6. 18. 09:38
반응형

1. 문제링크

https://leetcode.com/problems/maximum-subsequence-score/

 

Maximum Subsequence Score - LeetCode

Can you solve this real interview question? Maximum Subsequence Score - You are given two 0-indexed integer arrays nums1 and nums2 of equal length n and a positive integer k. You must choose a subsequence of indices from nums1 of length k. For chosen indic

leetcode.com

- nums1 : sum nums

- nums2 : mul nums (여기서 최소값만 사용)

 

 

2. 키 포인트

1) 배열은 nums2기준으로 정렬한다

2) priority_queue를 사용한다

    pq사이즈가 k가 될 때, 숫자의 합과 최소 min으로 곱한 값 중에 최댓값을 업데이트해준다

    pq사이즈는 k가 넘으면 pop해준다

 

 

3. solution

class Solution {
public:
    long long maxScore(vector<int>& nums1, vector<int>& nums2, int k) {
        vector<pair<int,int>>v;
        int size = nums1.size();
        for(int i = 0; i < size; i++){
            v.push_back({nums2[i], nums1[i]});
        }
        sort(v.begin(), v.end());
        priority_queue<int, vector<int>, greater<int>> pq;
        long long ans = 0, sum = 0;
        for(int i = size-1; i >= 0; i--){
            if(pq.size() >= k){
                sum -= pq.top();
                pq.pop();                
            }
            sum += v[i].second;
            pq.push(v[i].second);
            if(pq.size() == k)
                ans = max(ans, v[i].first * sum);
        }
        return ans;
    }
};

 

반응형