[백준] #2798 블랙잭 python

2022. 12. 28. 18:10

https://www.acmicpc.net/problem/2798

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

📕 설명 📕

수의 나열을 리스트로 받아서 itertools의 combinations를 이용하여 부분 집합을 구하여 3개씩 잘라서 합을 구하여 구현하였다.

🧑🏻‍💻 나의 풀이 🧑🏻‍💻

from itertools import combinations

N, M = map(int, input().split())
blackjak_list = list(map(int, input().split()))
sum_list = []
check_equal = False
result = M
for i in list(combinations(blackjak_list, 3)):
    tmp_val = sum(list(i))
    if tmp_val == M:
        check_equal = True
        break
    elif tmp_val < M:
        sum_list.append(M - tmp_val)
if check_equal:
    print(result)
else:
    sum_list.sort()
    result -= sum_list[0]
    print(result)

BELATED ARTICLES

more