Problem Solving/브루트포스

[백준-python] 2798번: 블랙잭

Dev_en 2022. 1. 23. 23:41
  • 분류 - 브루트포스
  • 난이도 - 브론즈2

관련 개념

집합 특징
  • 인덱스로 접근할 수 없다.
  • sum은 가능하다.

주의사항

문제를 잘 읽자. 세 카드의 합이 M을 넘기면 안된다.

(질문 게시판 읽어보니 이것 때문에 틀린 분들이 한 둘이 아닌 듯..)


답안 코드
from itertools import combinations

# 입력
n, m = map(int,input().split())
cards = list(map(int,input().split()))

diff=300000 # (m-세 카드의 합): 최댓값으로 초기화
r_combi = [] # 정답이 되는 세 카드의 조합을 저장할 리스트

# 세 카드의 조합 중 합이 m을 넘지 않는 선에서 (m-세 카드의 합)이 최소가 되는 조합을 구함
for combi in combinations(cards,3):
    if sum(combi)<= and diff>=m-sum(combi):
        diff=m-sum(combi)
        r_combi=list(combi)
        
print(sum(r_combi))