블랙잭 변형게임으로, 입력으로 주어진 N개의 카드중 3개를 그 총합이 M에 가깝게 골라 그 합을 리턴하는 문제이다.
nC3, 즉 조합 문제이다. 파이썬에서는 조합을 지원하므로 Combination 함수를 사용하여 만든 후 그 합이 M 이하인것중 최대의 값을 찾아주었다.
import sys
from itertools import combinations
n, m = map(int, sys.stdin.readline().split())
arr = list(map(int, sys.stdin.readline().split()))
max_num = 0
result_arr = list(combinations(arr, 3))
for i in result_arr:
if sum(i) <= m:
max_num = max(max_num, sum(i))
print(max_num)