Notice
Recent Posts
Recent Comments
Link
archive
[백준] 블랙잭 (Python) 본문
✏️ 문제
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
✏️ 풀이
주어진 카드 중 3개를 고른 합이 M을 넘지 않으며 최대한 M과 가까워야 한다.
중복해서 고를 수 없고 순서 관계없이 선택하므로 조합을 사용한다.
✏️ 코드
import itertools
n, m = map(int, input().split())
nums = list(map(int, input().split()))
min = m
min_sum = 0
for i in itertools.combinations(nums, 3):
diff = m - sum(i)
if diff == 0:
min = 0
min_sum = sum(i)
break
elif diff > 0:
if min > diff:
min = diff
min_sum = sum(i)
print(min_sum)
시간복잡도를 줄이기 위해 diff가 0이면 차이가 최소이므로 바로 출력하고 break하였다.
'STUDY > 알고리즘' 카테고리의 다른 글
[백준] 체스판 다시 칠하기 (Python) (0) | 2021.03.08 |
---|---|
[백준] 분해합 (Python) (0) | 2021.03.08 |
[백준] 수 정렬하기 3 (Python) (0) | 2021.03.08 |
[백준] 터렛 (Python) (0) | 2021.03.08 |
[백준] 골드바흐의 추측 (Python) (0) | 2021.03.08 |
Comments