[5/24]2309(7人の小人)


質問する

マイコード

import random

arr = []
for _ in range(9):
    arr.append(int(input()))
    
ssum = 0
while (ssum != 100):
    newlist = []
    while (len(newlist) != 7):
        key = random.choice(arr)
        if (key not in newlist):
            newlist.append(key)
    ssum = sum(newlist)

newlist.sort()
for i in newlist:
    print(i)

に答える

  • for文を使用して、配列に9つの数値を入力します.
  • whileを使用してリストマージを行い、while文を使用してリストから7つのリストマージをランダムに抽出します.
  • リストをソートし、順次出力します.
  • 効率的なコード

    import random
    
    arr = [20,7,23,19,10,15,25,8,13]
    
    arr.sort()
    result = sum(arr)
    
    flag = True
    for i in range(9):
        for j in range(i+1, 9):
            if (result - arr[i] - arr[j] == 100):
                del arr[i]
                del arr[j-1]
                flag = False
                break
        if flag == False:
            break
    
    for i in arr:
        print(i)
  • の方が効率的かどうかは不明です.
  • フィードバック

  • のfor文を使用して、和から2つ削除し、100を見つけてリストから削除します.
  • のfor文から抜け出すには、2つのbreakを使用します.
  • 学識

  • ランダムライブラリランダムをインポートします.ランダムに選べます.