
안녕하세요 !
오늘은 백준 - 블랙잭 문제를 가지고 왔습니다.

이 문제를 해결한 방법을 간략히 정리해보자면 아래와 같습니다.
- 입력을 받는다
- 카드를 3개 선택할 수 있는 모든 경우의 수를 구하고 카드들의 합을 구한다.
- M을 넘지 않으면서도 가장 가까운 수를 구한다.
import sys nm = list(map(int,sys.stdin.readline().strip().split())) card = list(map(int,sys.stdin.readline().strip().split()))
순서가 중요하지 않다보니 순열이 아닌 조합을 사용해서 카드를 선택해준다.
from itertools import combinations three_card = list(combinations(card, 3))
가장 가까운 수를 구할 때 M과의 차이가 가장 작은 수를 구했다.
min_gap = 100000 answer = 0 for i in sum_card: if i <= nm[1]: gap = nm[1] - i if min_gap > gap: min_gap = gap answer = i print(answer)
import sys from itertools import combinations nm = list(map(int,sys.stdin.readline().strip().split())) card = list(map(int,sys.stdin.readline().strip().split())) three_card = list(combinations(card, 3)) sum_card = [] for each_card in three_card: sum_card.append(sum(each_card)) min_gap = 100000 answer = 0 for i in sum_card: if i <= nm[1]: gap = nm[1] - i if min_gap > gap: min_gap = gap answer = i print(answer)