백준 블랙잭
https://www.acmicpc.net/problem/2798
처음 풀이
N, M = map(int, input().split())
li = list(map(int, input().split()))
li.sort()
n = 3
sum = 0
for i in range(N):
if n>0 and sum + li[N-1-i] <= M :
sum += li[N-1-i]
n -=1
print(sum)
삼중 for문(참고)
N, M = map(int,(input().split()))
d = list(map(int, input().split())) # 카드 리스트
result = 0
Max = 0
for i in range(N-2): # 3중 for문을 돌면서 겹치지 않게 범위를 지정
for j in range(i+1,N-1):
for k in range(j+1,N):
if d[i]+d[j]+d[k] > M: # 3개의 값 더한것이 M보다 크다면 넘어감
continue
else:
result = d[i]+d[j]+d[k]
if Max <= result: # M과 가장 유사한 값은 가장 큰값이기 때문에 비교해서 큰값을 저장
Max = result
print(Max)
삼중 for문(내가 작성)
N,M = map(int, input().split())
card = list(map(int, input().split()))
max =0
for i in range(0,N-2):
for j in range(i+1, N-1):
for k in range(j+1, N):
sum = card[i] + card[j] + card[k]
if sum<=M and max<sum:
max = card[i] + card[j] + card[k]
print(max)
패키지 풀이
from itertools import combinations
n, m = map(int,input().split())
card = list(map(int, input().split()))
com = list(combinations(card, 3))
total = 0
for i in com:
if sum(i) <= m:
total = max(total, sum(i))
print(total)