Minimum Rounds to Complete All Tasks

ㅋㅋ·2023년 1월 4일
0

알고리즘-leetcode

목록 보기
84/135

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;
    }
};

0개의 댓글