코딩 연습/백준 코드

블랙잭-2798.py

퀀텀리프하는 개발자 2023. 10. 18. 10:26
N, M = map(int, input().split())
cards = list(map(int, input().split()))

def blackjack(cards, M):
    max_sum = 0

    # 3중 for 구문을 사용하여 차례대로 3장을 가져옵니다.
    for i in range(len(cards)):
        for j in range(i + 1, len(cards)):
            # i+1을 하여 첫번째 카드 이후를 뽑습니다.
            for k in range(j + 1, len(cards)):
                card_sum = cards[i] + cards[j] + cards[k]
                # 뽑은 카드의 수를 더합니다.
                if card_sum <= M and card_sum > max_sum:
                    #넘지 않으면서 가까운 값은 이하(<=)로 표현하였습니다.
                    max_sum = card_sum
                    # card_sum을 max_sum에 갱신함으로써,
                    # max_sum은 뽑은 것 중에 가장 큰 합을 유지할 수 있습니다.
                    if max_sum == M:
                        return max_sum
                    # 가장 큰합은 M이기 때문에 M에 도달했을때 값을 도출합니다.
    return max_sum

result = blackjack(cards, M)
print(result)