import sys
# 10 3
# 18 54 46 52 28 22 23 53 28 40
# sys.stdin = open("input.txt","rt")
n, m = map(int, input().split())
num_list = list(map(int, input().split()))
num_list.sort(reverse = True)
ans_list = []
for k in range(len(num_list)-2):
start_num = num_list[k]
mid_num = num_list[k+1]
for j in range(k+2, len(num_list)):
sum_num = start_num + mid_num + num_list[j]
ans_list.append(sum_num)
list_to_set = list(set(ans_list))
list_to_set.sort(reverse=True)
print(list_to_set[m-1])
이렇게 짰는데 테스트 케이스 한개가 안맞았다.
10 3
18 54 46 52 28 22 23 53 28 40 이 경우, output 이 152가 되야하는데 흠...
# 정답 코드
import sys
sys.stdin=open("input.txt", "rt")
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])
# itertools 를 쓴방식
from itertools import combinations
n, m = map(int, input().split())
num_list = list(map(int, input().split()))
# 모든 3개 조합의 합 구하기
sum_list = set(sum(comb) for comb in combinations(num_list, 3))
# 정렬 후 m번째 큰 값 출력
print(sorted(sum_list, reverse=True)[m-1])
'코딩테스트대비 > 기본구현' 카테고리의 다른 글
자릿수의 합 (0) | 2025.02.02 |
---|---|
대표값(enumerate idx 이슈) (0) | 2025.02.02 |
k번쨰 수 (0) | 2025.02.02 |
k번째 약수 (0) | 2025.02.02 |
정다면체(기본구현) (0) | 2025.02.02 |
댓글