Dota2 Senate
MediumStringGreedyQueue
Solution
export function predictPartyVictory(senate: string): string {
const queue = [];
let [rCount, dCount] = [0, 0];
let [rBanCount, dBanCount] = [0, 0];
for (const s of senate) {
queue.push(s);
rCount += Number(s === 'R');
dCount += Number(s === 'D');
}
while (0 < rCount && 0 < dCount) {
const current = queue.shift();
if (current === 'R') {
if (0 < rBanCount) {
rBanCount -= 1;
rCount -= 1;
} else {
dBanCount += 1;
queue.push('R');
}
} else {
if (0 < dBanCount) {
dBanCount -= 1;
dCount -= 1;
} else {
rBanCount += 1;
queue.push('D');
}
}
}
return 0 < rCount ? 'Radiant' : 'Dire';
}