codingame.com: solve bank-robbers
[?]
Nov 29, 2020, 7:02 AM
44BSZW7B45K76U6L6KOTS2G4LAYN73RGTSMNGTLOZXQWKJ6BU2BACDependencies
Change contents
- file addition: codingame.com[1.0]
- file addition: bank-robbers[0.16]
- file addition: main_test.go[0.32]
package mainimport ("fmt""testing""github.com/stretchr/testify/assert")func TestBankRobber(t *testing.T) {cases := []struct {Robbers intVaults intvi []VaultInfoExpected int}{{1, 1, []VaultInfo{{3, 1}}, 250},{4, 4, []VaultInfo{{3, 2}, {4, 1}, {7, 6}, {7, 1}}, 5000000},{2, 4, []VaultInfo{{3, 1}, {3, 2}, {4, 0}, {4, 0}}, 1125},{5, 20, []VaultInfo{{6, 3}, {7, 1}, {4, 4}, {8, 4}, {3, 0}, {4, 3}, {8, 1}, {3, 3}, {5, 5}, {7, 6}, {6, 2}, {5, 3}, {5, 4}, {7, 0}, {7, 0}, {8, 4}, {6, 0}, {6, 5}, {3, 2}, {4, 2}}, 6515625},}for _, tc := range cases {t.Run(fmt.Sprintf("Robbers:%d, Vaults:%d, VaultInfo:%v", tc.Robbers, tc.Vaults, tc.vi), func(t *testing.T) {t.Parallel()assert.Equal(t, tc.Expected, BankRobber(tc.Robbers, tc.Vaults, tc.vi))})}} - file addition: main.go[0.32]
package mainimport ("fmt""math""sort")type VaultInfo struct {chars intnums int}func main() {var R intfmt.Scan(&R)var V intfmt.Scan(&V)VI := make([]VaultInfo, V)for i := 0; i < V; i++ {fmt.Scan(&VI[i].chars, &VI[i].nums)}fmt.Println(BankRobber(R, V, VI))}func BankRobber(robbers, vaults int, vi []VaultInfo) int {robtime := make([]int, robbers)for i := 0; i < vaults; i++ {//10 numbers, and 5 vowelstime := int(math.Pow(10, float64(vi[i].nums)) * math.Pow(5, float64(vi[i].chars-vi[i].nums)))robtime[0] += timesort.Ints(robtime)}return robtime[robbers-1]}