51 lines
682 B
Go
51 lines
682 B
Go
package q649
|
|
|
|
func predictPartyVictory(senate string) string {
|
|
n := len(senate)
|
|
revoked := make([]bool, n)
|
|
|
|
rRevoke, dRevoke := 0, 0
|
|
rRem, dRem := 0, 0
|
|
for i := range n {
|
|
switch senate[i] {
|
|
case 'R':
|
|
rRem++
|
|
case 'D':
|
|
dRem++
|
|
}
|
|
}
|
|
|
|
for i := 0; rRem > 0 && dRem > 0; i = (i + 1) % n {
|
|
if revoked[i] {
|
|
continue
|
|
}
|
|
|
|
switch senate[i] {
|
|
case 'R':
|
|
if rRevoke > 0 {
|
|
rRevoke--
|
|
rRem--
|
|
revoked[i] = true
|
|
} else {
|
|
dRevoke++
|
|
}
|
|
|
|
case 'D':
|
|
if dRevoke > 0 {
|
|
dRevoke--
|
|
dRem--
|
|
revoked[i] = true
|
|
} else {
|
|
rRevoke++
|
|
}
|
|
}
|
|
}
|
|
|
|
if rRem == 0 {
|
|
return "Dire"
|
|
} else {
|
|
return "Radiant"
|
|
}
|
|
}
|
|
|
|
var _ = predictPartyVictory
|