두 정수형 데이터가 담긴 벡터와 정수 하나를 받는다.
두 벡터에는 인덱스 주머니마다 바위를 채울 수 있는 최대량과 현재 바위의 양이 적혀있고,
정수 하나는 바위를 채워 넣을 수 있는 예비 바위의 수를 뜻한다.
문제는 이 예비 바위들을 사용하여 주머니마다 최대량으로 꽉차도록 바위를 나누고,
최대량을 가지는 주머니는 몇 개인지 구하는 것이다.
주머니 간 바위의 이동은 불가능하다.
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;
}
};