[Programmers][python] 19. クイズ練習(8):プログラマーの最大値を作成する


誤りに対する批判、質問、討論を歓迎します.自由にコメントを残しておきましょう!!

プログラマ-最高価格の作成


問題の説明


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

    せいげんじょうけん

  • アレイA、Bサイズ:1000以下自然数
  • 配列A,Bの元素サイズ:1000以下自然数
  • I/O例


    ABanswer[1, 4, 2][5, 4, 4]29[1,2][3,4]10

    I/O例説明


  • I/O例#1
    問題の例.

  • I/O例#2
    Aの最初の数字1、Bの2番目の数字4に乗算します.(積算値:4)Aの2番目の数字2,Bの1番目の数字3を乗じます.(積算値:4+6=10)
    10を返します.この場合が最も小さいからです.
  • の意見を打診


  • 最終的に累積された値が最小である場合、リストAの小さい値と、リストBの大きい値との積は最小である.

  • したがって、Aは昇順、Bは降順で並べ替えられ、各要素を乗じて蓄積される.
  • Code (Python)

    def solution(A,B):
        answer = 0
        
        A.sort()
        B.sort(reverse=True)
        
        for i in range(len(A)):
            answer += (A[i] * B[i])
    
        return answer

    この記事は、プログラマーアカデミー人工知能Defcosコースで学んだ内容をもとにまとめたものです.