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)

 

'코딩 연습 > 백준 코드' 카테고리의 다른 글

접미사 배열-11656.py  (0) 2023.10.18
빙고-2578.py  (0) 2023.10.18
세로읽기-10798.py  (0) 2023.10.18
수강신청-13414.py  (0) 2023.10.18
암호해독기-17176.py  (0) 2023.10.18

+ Recent posts