[Programmers] Lv2. さいこうを創出する


問題の説明
同じ長さの配列A,Bが2つある.各配列は自然数で構成されている.
アレイA,Bからそれぞれ1つの数字を抽出し,2つの数字を乗算する.これらのプロシージャを繰り返す長さは、アレイの長さであり、2つの数の値が加算されます.目標は、最終的に蓄積された値を最小限に抑えることです.(各配列からk番目の数字が抽出された場合、次は再抽出できません.)
例えば、A=[1,4,2]の場合、B=[5,4,4,4]
Aの最初の数字1、Bの最初の数字5を乗算します.(積算値:0+5(1 x 5)=5)
Aの2番目の数字4、Bの3番目の数字4に乗算します.(積算値:5+16(4 x 4)=21)
Aの3番目の数字2、Bの2番目の数字4に乗算します.(積算値:21+8(2 x 4)=29)
すなわち、この場合、29が返される.
配列A,Bが与えられると,最終的に蓄積された最大値を返すソルバが完了する.
せいげんじょうけん
配列A、Bの大きさ:1000未満の自然数
アレイA、Bの要素のサイズ:1000未満の自然数
に答える
def solution(A,B):
    A.sort()
    B.sort(reverse=True)

    answer = 0
    for a, b in zip(A, B):
        answer += a * b

    return answer