Maximum Bags With Full Capacity of Rocks

ㅋㅋ·2022년 12월 27일
0

알고리즘-leetcode

목록 보기
77/135

두 정수형 데이터가 담긴 벡터와 정수 하나를 받는다.

두 벡터에는 인덱스 주머니마다 바위를 채울 수 있는 최대량과 현재 바위의 양이 적혀있고,

정수 하나는 바위를 채워 넣을 수 있는 예비 바위의 수를 뜻한다.

문제는 이 예비 바위들을 사용하여 주머니마다 최대량으로 꽉차도록 바위를 나누고,

최대량을 가지는 주머니는 몇 개인지 구하는 것이다.

주머니 간 바위의 이동은 불가능하다.

class Solution {
public:
    int maximumBags(vector<int>& capacity, vector<int>& rocks, int additionalRocks) {
        
        vector<int> left{};

        int result{0};

        for (int i = 0; i < capacity.size(); i++)
        {
            int temp = capacity[i] - rocks[i];
            if (temp == 0)
            {
                result++;
            }
            else
            {
               left.push_back(temp);
            }
        }

        std::sort(left.begin(), left.end());

        for (int i = 0; i < left.size(); i++)
        {
            if (left[i] <= additionalRocks)
            {
                additionalRocks -= left[i];
                result++;
            }
            else
            {
                break;
            }
        }

        return result;
    }
};

0개의 댓글