Skip to content

2391. Minimum Amount of Time to Collect Garbage

Minimum Amount of Time to Collect Garbage

#flashcards

**Input:** garbage = ["G","P","GP","GG"], travel = [2,4,3]
**Output:** 21
**Explanation:**
The paper garbage truck:
1. Travels from house 0 to house 1
2. Collects the paper garbage at house 1
3. Travels from house 1 to house 2
4. Collects the paper garbage at house 2
Altogether, it takes 8 minutes to pick up all the paper garbage.
?
class Solution {
    public int garbageCollection(String[] garbage, int[] travel) {
        int[] prefixTravel = new int[garbage.length];
        int mCount = 0;
        int pCount = 0;
        int gCount = 0;
        int mTravel = 0;
        int pTravel = 0;
        int gTravel = 0;

        for (int i = 1; i < garbage.length; i++) {
            prefixTravel[i] = prefixTravel[i - 1] + travel[i - 1];
        }

        for (int i = 0; i < garbage.length; i++) {
            for (char c : garbage[i].toCharArray()) {
                if (c == 'M') {
                    mCount++;
                    mTravel = prefixTravel[i];
                } else if (c == 'P') {
                    pCount++;
                    pTravel = prefixTravel[i];
                } else {
                    gCount++;
                    gTravel = prefixTravel[i];
                }
            }
        }

        return mCount + gCount + pCount + gTravel + pTravel + mTravel;
    }
}