Minimum Amount of Time to Collect Garbage
MediumArrayStringPrefix Sum
Solution
export function garbageCollection(garbages: string[], travel: number[]): number {
for (let i = 1; i < travel.length; i++) {
travel[i] = travel[i - 1] + travel[i];
}
const lastGarbages = {
M: 0,
P: 0,
G: 0,
};
let answer = 0;
garbages.forEach((garbage, i) => {
for (const char of garbage) {
lastGarbages[char as keyof typeof lastGarbages] = i;
}
answer += garbage.length;
});
Object.values(lastGarbages).forEach((lastGarbage) => {
answer += lastGarbage === 0 ? 0 : travel[lastGarbage - 1];
});
return answer;
}