• 방법 1. 성공!!
from itertools import combinations
n, m = map(int, input().split())
cards = list(map(int, input().split()))
sums = []
for i in combinations(cards, 3): // cards에서 3개 조합 뽑음
if sum(i) <= m: // m보다 작거나 같으면
sums.append(sum(i)) // sums리스트에 3개의 합을 추가하고
else:
continue
print(max(sums)) // 제일 작은 값 출력
• 방법 2. 성공!! **시간단축**
from itertools import combinations
n, m = map(int, input().split())
cards = list(map(int, input().split()))
cards.sort()
maxValue = 0 // 최댓값 초기화 0
for i, j, k in combinations(cards, 3): // cards에서 3개 조합 뽑음
if maxValue < i+j+k <= m: // 3개의 합이 m보다는 작거나 같으면서 기존 최댓값보다 크면
maxValue = i+j+k // 최댓값으로 업데이트
print(maxValue)
• 방법1과 방법2 모두 성공이다.
하지만, 방법1은 sum연산을 하고 max연산을 한번더 해야해서 그런지 방법2의 경우가 시간이 더 적게 걸린다.