백준 BaekJoon Online Judge // 2798

2021. 1. 26. 15:11Programming/BOJ

백준 알고리즘 BaekJoon Online Judge 2798번 "블랙잭" 문제입니다.

import sys
from itertools import combinations

N, M = map(int, input().split())
lst = list(map(int, sys.stdin.readline().split()))
items = list(combinations(lst, 3))
temp = []
for item in items:
  if sum(item) <= M:
    temp.append(sum(item))

temp.sort(reverse=True)
print(temp[0])

M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력하는 문제다.

itertools의 combinations클래스를 사용했다. combinations를 사용해서 카드 조합 리스트를 생성하고 이 카드들의 숫자의 합을 M보다 크지 않은지 확인한 후 맞을 경우 새 리스트에 넣는다.

그 후 내림차순으로 정렬을 해서 맨 앞의 값을 출력하면 원하는 답을 얻을 수 있다.