lc-go/solutions/6/q649/solution.go
2026-01-25 11:56:12 +09:00

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