#BOJ 2798 블랙잭
n, m = map(int, input().split())
cards = list(map(int, input().split()))
max_sum = 0
for i in range(n):
for j in range(i+1, n):
for k in range(j+1, n):
if cards[i] + cards[j] + cards[k] <= m:
max_sum = max(max_sum, cards[i] + cards[j] + cards[k])
else:
continue
print(max_sum)
코드 설명
해당 문제는 브루트 포스(Bruteforce)문제로 가능한 모든 경우의 수를 구해보고 그 중 최선의 값을 답으로 출력해야한다.
따라서 세 번의 for문을 통해 가능한 모든 카드 조합을 고려해보아야 한다.
첫 번째 for문은 첫 번째로 고른 카드, 두 번째 for문은 두 번째로 고른 카드, 세 번째 for문은 마지막으로 고른 카드를 의미한다. 만약 고른 세 장의 카드의 합이 M
보다 작다면 기존의max_sum
과 세 카드에 적힌 수의 합 중 큰 수를 max_sum
의 값으로 갱신한다. 만약 고른 세장의 카드의 합이M
보다 크다면 넘어간다.