https://www.acmicpc.net/problem/2798
백준 알고리즘 2798번 블랙잭
import sys
n, m = map(int,sys.stdin.readline().split())
cardsList = list(map(int,sys.stdin.readline().split()))
highestSumInRange = 0
for f in range(len(cardsList) - 2): #첫 번재 카드 범위
sum = 0
sum += cardsList[f]
for s in range(f+1, len(cardsList) -1): # 두번째 카드 범위
sum += cardsList[s]
for t in range(s+1,len(cardsList)): # 세번째 카드 범위
sum += cardsList[t]
if sum <= m and highestSumInRange < sum: # 업데이트 되어 있는 합과 현재 합을 비교해서 현재 합이 높으면 저장
highestSumInRange = sum
if t == len(cardsList) -1 and s == len(cardsList) -2: # 두번째 카드 세번째 카드가 마지막에 도달했을때
sum = 0
elif t == len(cardsList) - 1: # 세번째 카드가 마지막 범위에 도달 했을때
sum -= cardsList[t] + cardsList[s]
else: # 특별한 위치에 도달 하지 않은 첫번째, 두번째, 세번째 카드는 세번째 카드만 합에서 빼준다
sum -= cardsList[t]
print(highestSumInRange)