Algorithm/Baekjoon
#백준 2798, 파이썬, 리스트, combinations
say!
2022. 7. 21. 14:23
728x90
# 백준 브루트 포스 : 2798번 - 블랙잭
n,m = map(int, input().split())
num = list(map(int, input().split()))
res = 0
for i in range(n):
for j in range(i+1, n):
for k in range(j+1, n):
if num[i]+num[j]+num[k] <= m: # 3개의 수의 합이 m을 넘지 않는 경우
res = max(res, num[i]+num[j]+num[k]) # m에 최대한 가까운 카드의 합을 구함
else: # m을 넘은 경우
continue
print(res)
그냥 세 수의 합을 모두 검사하는 방법이다...
아래의 풀이방법은 combinations를 이용해서 3개의 수를 선택한 조합을 통해 구하는 법이다.
# combinations
# 백준 브루트 포스 : 2798번 - 블랙잭
from itertools import combinations
n,m = map(int, input().split())
num = list(map(int, input().split()))
res = 0
com = list(combinations(num, 3))
for i in com:
if sum(i) <= m:
res = max(res, sum(i))
print(res)