블랙잭

yongju·2022년 12월 8일
0

BAEKJOON

목록 보기
17/40
post-thumbnail

❓문제

❗문제 정리

조합을 사용하여 카드를 3장 뽑고 그것의 합과 기준 m과의 차이중 가장 작은것을 취함.

📑코드

import itertools

n,m=map(int, input().split())#카드 수, 기준 수
cards=list(map(int, input().split()))
cards_=list(itertools.combinations(cards, 3))
loss=[]
for card in cards_:
  if sum(card)<=m:
    loss.append(sum(card)-m)#오차는 0부터 마이너스범위지님
print(max(loss)+m)

📝코드 설명

n,m=map(int, input().split())#카드 수, 기준 수
cards=list(map(int, input().split()))

필요한 파라미터 받기

cards_=list(itertools.combinations(cards, 3))

카드 중 중복없이 3장을 뽑아서 조합
cards_예시

loss=[]
for card in cards_:
  if sum(card)<=m:
    loss.append(sum(card)-m)#오차는 0부터 마이너스범위지님
  • cards_에서 조합 경우의 수(card)를 하나씩 가와 더하고, 그 합이 m 이하인것들만 취함.
  • 카드의 합에서 m을 빼서 차이(loss)를 구해서 loss에 붙여줌.
print(max(loss)+m)
  • loss의 범위는 [0,-\infin]이기 때문에 가장 차이가 0과 비슷한 것을 취하여 m을 더해주고 출력

🎖제출 결과

💡insight

profile
SI DEV

0개의 댓글