"""
K번째 큰 수
현수는 1부터 100사이의 자연수가 적힌 N장의 카드를 가지고 있습니다.
같은 숫자의 카드가 여러장 있을 수 있습니다.
현수는 이 중 3장을 뽑아 각 카드에 적힌 수를 합한 값을 기록하려고 합니다.
3장을 뽑을 수 있는 모든 경우를 기록합니다.
기록한 값 중 K번째로 큰 수를 출력하는 프로그램을 작성하세요.
- 입력 설명
첫 줄에 자연수 N(3<=N<=100), K(1<=K<=50)가 입력되며 그 다음 줄에 N개의 카드 값이 입력된다.
- 출력 설명
첫 줄에 K번째 수를 출력합니다. K번째 수는 반드시 존재합니다.
- 입력예제 1
10 3
13 15 34 23 45 65 33 11 26 42
- 출력예제 1
143
"""
solution = []
n, k = map(int, input().split())
if not (3<=n<=100) or not (1<=k<=50):
print(f"Scope of N and K Should be (3<=N<=100) and (1<=K<=50)")
def big_k(n, k):
import random
random_numbers = [random.randint(1, 101) for _ in range(n)]
print(random_numbers)
for a in range(n):
for b in range(a+1, n):
for c in range(b+1, n):
print(random_numbers[a]+random_numbers[b]+random_numbers[c], ':', random_numbers[a], random_numbers[b], random_numbers[c])
solution.append(random_numbers[a]+random_numbers[b]+random_numbers[c])
result = sorted(solution, reverse=True)
print(result)
return result[k-1]
print(big_k(n, k))
다른 풀이 - 1
n, k = map(int, input().split())
a = list(map(int, input().split()))
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])
res = list(res)
res.sort(reverse=True)
print(res[k-1])
다른 풀이 - 2
import random
from itertools import combinations
def solution(n,k):
n, k = map(int,input().split())
n_list = [random.randint(1, 100) for _ in range(n)]
answer = set()
for i in list(combinations(n_list,3)):
answer.append(sum(i))
answer.sort(reverse=True)
return answer[k-1]