K次大数


コード実装能力の育成
に質問
K次大数
賢洙は1〜100の自然数が書かれたカードをN枚持っている.同じ数字のカード.
たくさんあります.賢洙はその中からカード1枚あたりの数字の和を3枚抜き出した.
はい.3枚まで引き抜くことができることをすべて記録します.出力レコード値のうち最大のK個
プログラムを作成してください.
大数から生み出された数が25,25,25,23,22,19であれば・・・K値が3の場合、K番目の大きい値は22です.
■説明の入力
1行目には自然数N(3<=N<=100)とK(1<=K<=50)が入力され、2行目にはN個のカード値が入力される.
■出力説明
1行目にK個の数字を出力します.K番目の数は存在しなければならない.
■入力例1
10 3
13 15 34 23 45 65 33 11 26 42
■出力例1
143
コード#コード#💻
import sys
#sys.stdin=open("input.txt", "rt")  # read text
n, k = map(int, input().split())
a = list(map(int, input().split()))

# 중복을 제거하는 자료구조 : set
res = set()
for i in range(n):
    for j in range(i+1, n):
        for m in range(j+1, n):
            res.add(a[i]+a[j]+a[m])  # set은 add를 사용해 값 추가

# set에는 sort 기능이 없다. 리스트로 다시 바꿔야 함
res = list(res)
res.sort(reverse=True)  # 내림차순 정렬
print(res[k-1])
リファレンス
  • インフラストラクチャ:Pythonアルゴリズム回答