728x90
n, m = map(int, input().split())
cards = list(map(int, input().split()))
max_val = 0
def blackjack(index=0, visit_index=-1, arr=[], length=n, key=m):
if index == 3:
if sum(arr) > key: return
global max_val
if max_val < sum(arr):
max_val = sum(arr)
return
else:
for i in range(visit_index + 1, length):
blackjack(index=index+1, visit_index=i, arr= arr+[cards[i]])
blackjack()
print(max_val)
브루트포스로 구하면 되는 문제이긴하다.
이전에 브루트포스로 풀어보았기 때문에 백트래킹으로 다시 풀어보았다.
m을 넘는 경우에만 조건을 걸어서 넘어갔다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 2583 영역구하기 (0) | 2021.03.04 |
---|---|
[백준] N과 M (시리즈) (0) | 2021.03.04 |
[백준] 2309 일곱 난쟁이 (0) | 2021.03.04 |
[백준] 7569 토마토 (2) | 2021.03.02 |
[백준] 7576 토마토 (0) | 2021.03.02 |