Issue
You are given a list of N transfers (numbered from 0 to N-1) between two banks: bank A and bank B. The K-th transfer is described by two values: . R[K] (either "A" or "B") representing the recipient (the bank the transfer is sent to); V[K] denoting the value sent via the transfer. . All transfers are completed in the order they appear on the list. The banks do not want to go into debt (i.e. their account balance may not drop below 0). What minimum initial account balance in each bank is necessary in order to complete the transfers? Write a function: a vector int> solution(string &R, vector int> &V); that, given a string R and an array of integers V, both of length N, returns an array of two integers. The integers should represent the minimum initial account balances for banks A and B in the following order: [bank A, bank B]. Result array should be returned as a vector of integers. Examples: Examples: 1. Given R = "BAABA' and V = [2,4,1,1,2], the function should return [2,4). The bank accounts' balances after each transfer are shown in the following table: ΤΑΙ Β initial balance 2 / 4 transfer 2 from A to B 10 | 6 transfer 4 from B to A | 4 | 2 transfer 1 from B to A | 5 | 1 transfer 1 from A to B | 4 | 2 transfer 2 from B to A 6 10 2. Given R = "ABAB" and V = [10, 5, 10, 15), the function should return [0, 15) 3. Given R = "B" and V = [100], the function should return (100,0). Write an efficient algorithm for the following assumptions: string R and array V are both of length N; • Nis an integer within the range [1..100,000); • each element of array V is an integer within the range [1..10,000); • strina R consists only of the characters "A" and/or "B". enges saved
Solution
def initial_amount(R, V):
min_A, min_B, balance = 0, 0, 0
for receiver, amount in zip(R, V):
if receiver == 'A':
balance += amount
min_B = min(-balance, min_B)
else:
balance -= amount
min_A = min(balance, min_A)
return [-min_A, -min_B]
initial_amount('BAABA', [2,4,1,1,2])
[2, 4]
initial_amount('ABAB', [10,5,10,15])
[0, 15]
initial_amount('B', [100])
[100, 0]
Answered By - onyambu
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.