import sys
n, m = map(int, sys.stdin.readline().split())
input_arr = list(map(int, sys.stdin.readline().split()))
result = 0
for i in range(n):
for j in range(i+1, n):
for k in range(j+1,n):
if input_arr[i] + input_arr[j] + input_arr[k] > m:
continue
else:
result = max(result, input_arr[i] + input_arr[j] + input_arr[k])
print(result)
위 문제는 N개의 카드 중 3개의 카드만 뽑아서 합이 M 과 가장 비슷한 경우의 합을 출력하는 것이다.
이 문제의 경우 모든 경우의 수를 살펴보고 가장 적합한 것을 고르면 된다.
3개의 카드를 뽑아야하기 때문에 3중 for 반복문을 사용하였다.
3개의 합이 M 보다 크다면 이는 가깝지만 값을 넘었기에 제외하기 위해 continue 를 해준다
만약 3개의 합이 M보다 작으면 result 에 값을 지정한다. 이 때, 이전에 나왔던 값들 중 가장 큰 값을 선택하면 되므로 max() 함수를 이용한다.