BOJ2798 - blackjack

CYSSSSSSSSS·2023년 7월 21일

알고리즘

목록 보기
78/83

문제 2798

문제

  • N장의 카드에 써져 있는 숫자가 주어졌을 때, M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 구해 출력하시오.

해설

  • 숫자의 3개의 조합이 중복되지 않으면서 3개의 합이 M 과 같거나 최대한 가까운 값으로 조건을 계산하면 된다.
  • python 에서 제공하는 combinations 사용하면 손쉽게 해결 할 수 있다.
import sys
from itertools import combinations

input = sys.stdin.readline

n, m = map(int, input().split())

nums = list(map(int, input().split()))

coms = list(combinations(nums, 3))
answer = 0
for com in coms:
    sum_ = com[0] + com[1] + com[2]
    if answer < sum_ <= m:
        answer = sum_

print(answer)
profile
개발자 되고 싶어요

0개의 댓글