Coding Test
[추석맞이 코딩챌린지③] 블랙잭
상상쓰
2021. 9. 21. 19:55
https://cafe.naver.com/codeuniv/44963
[추석맞이 코딩챌린지③] 블랙잭
첫 번째 문제와 두 번째 문제는 잘 풀어보셨나요? 오늘은 Lv.3 문제로 좀 어려울 수 있어요ㅠㅠ 하지만 우리 모두 할 수 있어요! 오늘도 파이팅💪💻🔥 세 번째 문제는 ...
cafe.naver.com
재귀함수를 사용하여 N 개의 카드 중에서 세 장의 카드를 뽑도록 구현하였다.
0
0 1
0 1 2
0 1 3
.
.
.
0 1 N
0 2 3
.
.
.
N-3
N-3 N-2
N-3 N-2 N-1
순으로 계산하며 하나의 카드 또는 두 장의 카드의 숫자의 합이 X 를 넘으면 그 카드를 포함하는 경우는 더 진행하지 않는다. 합이 X 를 넘지 않으면서 세 장이 됐을 때 세 장의 카드의 숫자의 합 중에서 최댓값을 출력한다.
import sys
N, X = map(int, sys.stdin.readline().split())
cards = list(map(int, sys.stdin.readline().split()))
cards.sort()
answer = 0
def rf(N, X, current, result, count):
global cards
global answer
if count == 3:
answer = max(answer, result)
else:
for i in range(current+1, N+count-2):
if result + cards[i] <= X:
rf(N, X, i, result + cards[i], count + 1)
rf(N, X, -1, 0, 0)
print(answer)