task의 어려움 정도(레벨)들이 들어있는 정수형 벡터를 받는다
모든 task를 수행할 때 걸리는 가장 적은 라운드 수를 구하는 문제
이 때 조건이 있는데, 한 라운드에 무조건 같은 레벨의 2개 혹은 3개의 task를 수행할 수 있다
모든 임무를 수행할 수 없는 경우 -1을 반환
class Solution {
public:
int minimumRounds(vector<int>& tasks) {
unordered_map<int, int> taskTable{};
for (int i = 0; i < tasks.size(); i++)
{
taskTable[tasks[i]]++;
}
int result{0};
for (auto it = taskTable.begin(); it != taskTable.end(); it++)
{
while (0 < (*it).second)
{
switch((*it).second)
{
case 1:
return -1;
case 2:
case 4:
taskTable[(*it).first] -= 2;
break;
default:
taskTable[(*it).first] -= 3;
break;
}
result++;
}
}
return result;
}
};